Wie zum extrahieren einer Teilzeichenfolge Abgleich ein Muster von einem Unix-shell-variable
Ich bin relativ neu in der Unix-shell-scripting. Hier ist mein problem. Ich habe dieses Skript...
isql -S$server -D$database -U$userID -P$password << EOF > $test
exec MY_STORED_PROC
go
EOF
echo $test
Generieren, dieses Ergebnis...
Msg 257, Level 16, State 1:
Server 'MY_SERVER', Procedure 'MY_STORED_PROC':
Implicit conversion from datatype 'VARCHAR' to 'NUMERIC' is not allowed. Use
the CONVERT function to run this query.
(1 row affected)
(return status = 257)
Statt echo der isql-Ausgabe, möchte ich das extrahieren der "257" und kleben Sie es in einer anderen variable, so kann ich zurückgeben 257 aus dem Skript. Ich denke irgendeine Art von sed-oder grep-Befehl wird dies tun, aber ich weiß wirklich nicht, wo zu beginnen.
Irgendwelche Vorschläge?
InformationsquelleAutor John M Gant | 2009-05-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
bash-strip-Teile aus dem Inhalt der shell-Variablen.
${parameter#pattern}
gibt den Wert von $parameter ohne den Teil am Anfang, der passtpattern
.${parameter%pattern}
gibt den Wert von $parameter ohne den Teil am Ende, der passtpattern
.Ich denke, es gibt einen besseren Weg, dies zu tun, aber dies sollte funktionieren.
So könnte man kombinieren in:
Wenn Sie interessiert sind, in der
(return status = xxx)
Teil, würde es sein:Den entsprechenden Abschnitt in der bash-manpage ist "Parameter Expansion".
InformationsquelleAutor fmarc
Hier ist eine quick-and-dirty hack für Sie, aber Sie sollten wirklich anfangen, zu lernen, diese Sachen selbst:
Ja, was zwischen \( und \) ist dann gegeben durch \1 in der substitution. [0-9]\+ bedeutet, dass mit ein oder mehr Ziffern.
InformationsquelleAutor Nikolai Fetissov