我一直在创建将if / else的输出分配给变量但继续收到错误。
例如:
mathstester=$(If [ 2 = 2 ]
Then echo equal
Else
echo "not equal"
fi)
每当我在脚本中添加$mathstester
时,就像这样:
echo "Equation: $mathstester"
应显示:
Equation: Equal
我需要以不同方式进行布局吗?它甚至可能吗?
答案 0 :(得分:2)
使用if
的正确方法是:
mathtester=$(if [ 2 = 2 ]; then echo "equal"; else echo "not equal"; fi)
要在多行语句中使用它,您可以考虑查看link。
答案 1 :(得分:1)
将if
语句放在赋值中是相当笨拙的,容易出错。更为标准的方法是将分配放在if
:
if [ 2 = 2 ]; then
mathstester="equal"
else
mathstester="not equal"
fi
对于测试变量,您可以使用if [ "$b" = 2 ]
之类的东西(它会进行字符串比较,例如,如果b是" 02"它将不等于& #34; 2")或if [ "$b" -eq 2 ]
,它进行数字比较(仅限整数)。如果你实际上使用的是bash(不仅仅是一个通用的POSIX shell),你也可以使用if [[ "$b" -eq 2 ]]
(类似于[ ]
,但对于更复杂的表达式,语法更清晰一些),{{{ 1}}(这些只是数字表达式,并且非常不同的语法)。有关详细信息,请参阅BashFAQ #31: What is the difference between test, [ and [[ ?。