Unix Bash - 将if / else赋给Variable

时间:2015-03-21 14:41:30

标签: bash unix

我一直在创建将if / else的输出分配给变量但继续收到错误。

例如:

mathstester=$(If [ 2 = 2 ]
Then echo equal
Else
echo "not equal"

fi)

每当我在脚本中添加$mathstester时,就像这样:

echo "Equation: $mathstester"

应显示:

Equation: Equal

我需要以不同方式进行布局吗?它甚至可能吗?

2 个答案:

答案 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 [[ ?