これを実行すると:
#!/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
独自に実行されたコマンドの戻りコードを確認してください。