これはとてもまっすぐ単一のコマンドが終了コード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
期待どおりに動作します。