私はエラー処理を比較するためにif条件で使用するために、awkスクリプトのエラーコードまたは終了ステータスをシェルに読み込みたいと思います。私のシェルスクリプトは次のとおりです。
私のスクリプト:
#!/bin/sh
awk -v CONFIG_SOURCE=Testfile1.txt -f test.awk
echo $? # prints the error code '2' in this case, if the file is actually not available
recval = $?
if ($recval == '$2') **//this condition statement doesn't seems to work.**
then
echo "Some error"
fi
.awk ファイルのテスト:
BEGIN {
ignore_line = 0;
if ( CONFIG_SOURCE == "" )
{
print "Error: Invalid embed source file.";
exit 1
}
if ( 0 != system( "[ -f " CONFIG_SOURCE " ] " ) )
{
print "Error: Embed source file '" CONFIG_SOURCE "' does not exist."
exit 2
}
}
したがって、ファイルが利用できない場合は、エコー可能な終了ステータス "2"を返しますが、値 "2"または終了ステータスをシェルの一部の変数にコピーする方法(recval)
ベストアンサー1
これは働きます:
#!/bin/sh
awk -v CONFIG_SOURCE=Testfile1.txt -f test.awk
re=$?
echo "$re"
if [ "$re" -eq 2 ]; then
echo >&2 "Some error"
fi
スクリプトの問題はecho $?
beforeを使用することですrecval = $?
。 (最後の問い合わせ終了ステータス)echo $?
値を印刷すると、$?
しかし、それから$?
カバーしましたecho $?
。最後のステートメントの終了状態はの終了状態であり、ゼロにすることができますecho $?
。