0

この SO 投稿のコードを試しました - How to evaluate a boolean variable in an if block in bash? そしてそれは機能しません。BASH にはブール値がないようです。BASH でブール値を設定およびチェックできる完璧な回避策はありますか?

私のコード -

#!/bin/bash
flag=true
if [ $flag ]
echo 'True'
#flag=false
#echo 'Now changed to false' 
fi

2 行目で flag=false の場合でも、出力は True のままです。なんで ?

4

2 に答える 2

10

このように、角括弧なしで試してください

#!/bin/bash
flag=true
if $flag ; then
   echo 'True'
   #flag=false
   #echo 'Now changed to false' 
fi
于 2013-08-01T22:23:32.337 に答える
4

「man test」のこの部分のために、true と評価されます -

 [ expression ]
         string        True if string is not the null string.

次のようなものを使用する必要があります-

#!/bin/bash
flag=1
if [ ${flag} -eq 1 ]
then
    echo 'True'
    #flag=0
    #echo 'Now changed to false' 
fi
于 2013-08-01T22:31:41.773 に答える