1

Bash で次のスクリプトを作成しましたが、目的の出力が出力されません。

a="abc"

if (test "$a"="$a ") then 
    echo "true "
else
    echo "false "
fi

このスクリプトは印刷されるはずfalseですが、印刷されません。私はBashスクリプトを初めて使用するので、印刷されない理由を誰か教えてもらえますfalseか?

4

1 に答える 1

3

test引数を 1 つだけ指定しています。"$a"="$a "これは と同等"$a=$a "です。test引数を 1 つだけ取得した場合、その引数に少なくとも 1 文字が含まれている場合は /true/success と評価され、それ0以外の場合は1/false/error と評価されます。最小限の修正は、 の周りにスペースを配置することである=ため、3 つの個別の引数を指定します。

if (test "$a" = "$a ") then

しかし、Bashier スタイルで書くことを強くお勧めします。

if [[ "$a" = "$a " ]] then

(元のバージョンの(andはサブシェルで実行されるだけであり、実際にはまったく目的を果たさないことに注意してください。))test

于 2012-10-16T18:30:51.197 に答える