次のようなエイリアスを記述したいと思います。
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
元のコマンドが失敗した場合にのみ最終コマンドを実行するには、サブシェル (または複合ブロック) が必要です。