我在Bash中编写了以下脚本,但它没有打印所需的输出:
a="abc"
if (test "$a"="$a ") then
echo "true "
else
echo "false "
fi
此脚本应打印false
但不是。{我是Bash脚本的新手,所以有人可以告诉我它为什么不打印false
吗?
答案 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中运行,这实际上根本没有任何意义。)