1

我在 Bash 中编写了以下脚本,但它没有打印所需的输出:

a="abc"

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

该脚本应该打印false,但不是。我是 Bash 脚本的新手,所以谁能告诉我为什么它不打印false

4

1 回答 1

3

test只给出一个参数:"$a"="$a ",相当于"$a=$a ". 当test仅获得一个参数时,0如果该参数包含至少一个字符,则计算结果为 /true/success ,否则计算结果为1/false/error。最小的解决方法是在 周围放置空格=,因此您要给它三个单独的参数:

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

但我真的建议以 Bashier 风格编写它:

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

(请注意,原始版本中的(and)仅导致test在子 shell 中运行,这根本没有任何作用。)

于 2012-10-16T18:30:51.197 回答