我在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/成功,而1
/false/错误否则。最小的修复程序将是在=
周围放置空间,因此您给它提供了三个不同的参数:
if (test "$a" = "$a ") then
,但我真的建议您以狂热的风格写它:
if [[ "$a" = "$a " ]] then
(请注意,原始版本中的(
和)
仅导致test
在子壳中运行,这确实没有目的。)