1. ホーム
  2. バッシュ

[解決済み】bash "if [ false ];" はfalseの代わりにtrueを返す -- なぜ?

2022-04-09 18:53:27

質問

なぜ、以下のような出力になるのでしょうか? True ?

#!/bin/sh

if [ false ]; then
    echo "True"
else
    echo "False"
fi

これは、常に True という条件であるにもかかわらず、そうでないように見える。もし私が括弧 [] と表示され、動作するのですが、その理由がわかりません。

どうすればいいですか?

を実行しています。 [ (別名 test を実行するのではなく、引数 "false"を指定して、コマンド false . false"は空でない文字列なので test コマンドは常に成功します。実際にコマンドを実行するには [ コマンドを使用します。

if false; then
   echo "True"
else
   echo "False"
fi