1. ホーム
  2. bash

[解決済み] bashのifブロックの中でboolean変数を評価する方法は?重複

2022-11-03 09:33:53

質問

以下の変数を定義しています。

myVar=true

では、このようなものを実行したいと思います。

if [ myVar ]
then
    echo "true"
else
    echo "false"
fi

上記のコードは動作しますが、もし私が

myVar=false

を実行しても、trueが出力されます。 何が問題なのでしょうか?

edit: 私は、次のような形式で何かをすることができることを知っています。

if [ "$myVar" = "true" ]; then ...

が、なんだかぎこちない。

ありがとうございます。

どのように解決するのですか?

はブーリアン変数を知りませんし、また test (を使用したときに呼び出されるものです)。 [ ).

解決策としては

if $myVar ; then ... ; fi

なぜなら truefalse を返すコマンドです。 0 または 1 は、それぞれ if が期待するものです。

値が "swapped" されていることに注意してください。の後のコマンドは if の後のコマンドは 0 を返さなければならないが 0 は、ほとんどのプログラミング言語で「偽」を意味します。

セキュリティ警告 : これは BASH が変数を展開し、その結果をコマンドとして実行しようとするために動作します! のような悪意のあるコードが変数に含まれていないことを確認してください。 rm -rf /