||を使用して終了ステータスコードを渡します。

||を使用して終了ステータスコードを渡します。

次のようなエイリアスを作成したいと思います。

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元のコマンドが失敗した場合にのみ最終コマンドを実行するには、サブシェル(または複合ブロック)が必要です。

関連情報