0
引数として渡されたコマンドの終了ステータスを取得したいとします(shスクリプトのa.sh
)。シェルスクリプト:実行されたコマンドの終了ステータスが正しくありません
私が試した:
#!/bin/sh
CMD="[email protected]"
echo "arg passed CMD: $CMD"
($CMD) >/dev/null 2>&1
res=$?
echo "exit status: $res"
CMD="echo aaa | grep -q zzz"
echo "in script CMD: $CMD"
($CMD) >/dev/null 2>&1
res=$?
echo "exit status: $res"
一度実行:私は直接シェルでコマンドを実行する場合
./a.sh 'echo aa | grep -q zzz'
arg passed CMD: echo aa | grep -q zzz
exit status: 0
in script CMD: echo aaa | grep -q zzz
exit status: 0
をしかし、私は以下を参照してください。
/bin/sh -c 'echo aa | grep -q zzz ; echo $?'
1
どのようにすべき私のスクリプトを見てのように、実行されたコンマの0
の代わりに正しいステータス1
を取得するnd?