コマンドを引数として受け取り、コマンドを実行するbashスクリプトに関数を作成しようとしています。コマンドがゼロ以外の値で終了すると、スクリプトは中断されます。
文書:command_wrapper.sh
#!/usr/bin/env bash
function exec_cmd() {
local command=${1}
$command || exit # run the command if $? is 1 exit
if [[ $? -eq 1 ]] # AGAIN if $? is 1 exit
then
echo "command failed"
exit
fi
return 0
}
exec_cmd "grep -R somsomeoemoem ." # call the function, passing a
# command that will exit with 1
echo "rest of script running"
呼ぶ:
% ./command_wrapper.sh
./command_wrapper.sh:exec_cmd "grep -R somethingyouwillneverfind ."
rest of script running
ゼロ以外の終了で関数を実行した後、スクリプトは引き続き実行されます。なぜですか?失敗時にエラーが発生したときに
このコマンドを終了させるにはどうすればよいですか?$command
答え1
あなたの機能は設計どおりに機能しますが、問題はあなたの家が正しくないことです。grep -R somsomeoemoem .
エラーが発生したため終了しません。
関数が終了することを確認するには、次のコマンドを試してください。
exec_cmd "false"