私は比較的Unixシェルスクリプトの新機能です。ここに私の問題がある。私は Unixシェル変数からパターンにマッチする部分文字列を取り出す方法
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)
代わりisqlの出力をエコーで、私は「257」を抽出し、それを固執したいと思います...
isql -S$server -D$database -U$userID -P$password <<EOF> $test
exec MY_STORED_PROC
go
EOF
echo $test
は、この結果を生成するには...このスクリプトを使用しました私はスクリプトから257を返すことができるように別の変数。私は何らかのsedやgrepコマンドがこれをやると思っていますが、どこから始めたらいいかわかりません。
提案がありますか?
RC=`tail -1 $test |sed 's/(return status = \([0-9]\+\))/\1/'`
ありがとうございました。だから私は尋ねる理由は:私は、経験豊かなUnixのコーダーが実世界の問題を解決するのを見たかったので、私はそれを自分でやることを学ぶことができました。この場合、tailコマンドは$ testの最後の行をsedコマンドに渡します。これは\\(と)\(全体のパターンが一致していると仮定して)の中にあるものを返します。そうですか? –
はい、\\(と\\)の間にあるものは、置換で\ 1で与えられます。 [0-9] \ +は、1つ以上の数字と一致することを意味します。 –