我一直在尝试将if/else的输出分配给一个变量,但是一直出现错误。
例如:
mathstester=$(If [ 2 = 2 ]
Then echo equal
Else
echo "not equal"
fi)
当我在一个脚本中添加
$mathstester
,并按如下方式排列时:echo "Equation: $mathstester"
它应该显示:
Equation: Equal
我需要重新布局吗?这可行吗?
正确使用 if
的方法是:
mathtester=$(if [ 2 = 2 ]; then echo "equal"; else echo "not equal"; fi)
如果您要在多行语句中使用它,您可以考虑查看此链接。
把if
语句放在赋值语句里面是很笨拙并易错的。更标准的方式是把赋值语句放在if
语句里面:
if [ 2 = 2 ]; then
mathstester="equal"
else
mathstester="not equal"
fi
关于测试变量,你可以使用类似于 if [ "$b" = 2 ]
(这将进行字符串比较,所以例如如果 b 是 "02",它将不等于 "2")或者if [ "$b" -eq 2 ]
,它执行数字比较(仅限整数)。如果你实际上使用的是 bash(而不仅仅是通用的 POSIX shell),你还可以使用 if [[ "$b" -eq 2 ]]
(类似于 [ ]
,但其语法更清晰,适用于更复杂的表达式),以及 (( b == 2 ))
(这些只执行数字表达式,并具有非常不同的语法)。有关更多详细信息,请参见BashFAQ#31:test、[和[[之间的区别是什么?
fi
。 - Jason Huif
的正确语法。这样写才对:x = $(if [ 2 = 2 ]; then echo equal; else echo "not equal; fi)
。参考https://www.gnu.org/software/bash/manual/bash.html#Conditional-Constructs。请注意大小写敏感--`If`和`if`是不同的。 - Ulfalizerecho -n text
。 - Jason Hu