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

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

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

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

関連情報