我在 Bash 中编写了以下脚本,但它没有打印所需的输出:
a="abc"
if (test "$a"="$a ") then
echo "true "
else
echo "false "
fi
该脚本应该打印false
,但不是。我是 Bash 脚本的新手,所以谁能告诉我为什么它不打印false
?
您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 中运行,这根本没有任何作用。)