test[]を使用して戻りコードをキャプチャします。

test[]を使用して戻りコードをキャプチャします。

これを実行すると:

#!/usr/bin/env bash

simple_return_zero(){
  return 0;
}

simple_return_one(){
  return 1;
}

if [ simple_return_zero ]; then
   echo "we have 0000";
fi

if [ ! simple_return_zero ]; then
   echo "we have not 00000";
fi

if [ simple_return_one ]; then
   echo "we have 11111";
fi

if [ ! simple_return_one ]; then
   echo "we have not 11111";
fi

私は得る:

we have 0000
we have 11111

上記のコードが間違っていることを知っています。これが正しい方法だと思います。

if simple_return_zero; then
   echo "we have 0000";
fi

if ! simple_return_zero; then
   echo "we have not 00000";
fi

if simple_return_one; then
   echo "we have 11111";
fi

if ! simple_return_one; then
   echo "we have not 11111";
fi

今、私たちははるかに興味深いものを得ます。

we have 0000
we have not 11111

私の質問は - この場合、テストコマンド([])が機能しないのはなぜですか?テストコマンドは終了/返却コードを確認しませんか? ? ?

答え1

テストコマンドは終了/返却コードを確認しませんか? ? ?

絶対にしないでください。括弧内のテキストで定義されたテストを実行し、その構文は で見ることができますhelp test

if独自に実行されたコマンドの戻りコードを確認してください。

関連情報