Bash脚本中的字符串比较不起作用

时间:2012-10-16 18:25:34

标签: string bash

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

a="abc"

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

此脚本应打印false但不是。{我是Bash脚本的新手,所以有人可以告诉我它为什么不打印false吗?

1 个答案:

答案 0 :(得分:3)

您只给test一个参数:"$a"="$a ",相当于"$a=$a "。当test只获得一个参数时,如果该参数包含至少一个字符,则计算结果为0 / true / success,否则计算结果为1 / false / error。最小的修复是在=周围加上空格,所以你要给它三个不同的参数:

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

但我真的建议用Bashier风格来写它:

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

(请注意,原始版本中的()仅会导致test在子shell中运行,这实际上根本没有任何意义。)