次のようなエイリアスを作成したいと思います。
alias baz="false || echo bar"
(実際にはfalse
失敗する可能性のあるコマンドです。)しかし、失敗ステータスコードを次の呼び出し元に渡したいと思います。つまり、現在の動作は次のようになります。
$ false; echo $?
1
$ false || echo foo; echo $?
0
私はそれをfalse || echo foo
行うときを除いて、すべての点で同じように動作する他のタスクを実行したいと思います。echo $?
1
メモ:私はそのecho foo
ビットが基本的に常に成功すると期待しています。
答え1
コマンドの戻り値を格納する関数は複雑ではありません。
f() {
some-command-that-can-fail
retval=$?
if [ "$retval" != 0 ] ; then
echo the command failed
fi
return $retval
}
正確な戻り値を気にせず、ゼロ以外の戻りコードのみを希望する場合は、次のようになります。
somecmd || ( echo it failed ; false )
false
元のコマンドが失敗した場合にのみ最終コマンドを実行するには、サブシェル(または複合ブロック)が必要です。