echoと入力したコマンドが成功したことを確認する

echoと入力したコマンドが成功したことを確認する

これはとてもまっすぐ単一のコマンドが終了コード0を返すことを確認してください。しかし、コマンドにechoを使用すると、どうすればいいかわかりません。たとえば、この場合、テストしたいプログラムは間違いなくゼロ以外の終了コードを返しますが、bashは代わりにechoでゼロの終了コードを探しているようです。

    if echo "something" > exit 42; then
        echo "OK"
    else
        echo "NOT OK"
    fi

対話型入力を必要とするプログラムがゼロ以外の終了コードを返すかどうかを確認する方法はありません。この問題をどのように解決し、私がエコーしているプログラムの終了コードを取得できますか?

答え1

bashはうまく終了していることがわかりました。問題は、 if echo "something" > exit 42; then出口を実行するのではなく、単に出口という名前のファイルに「何か」を出力するので、戻りコードは実際にはゼロであるということです。この問題を解決するには、「|」を使用する必要があります。if echo "something" | exit 42; then期待どおりに動作します。

関連情報