Unix Bash - 将 if/else 赋值给变量

Unix Bash - Assign if/else to Variable

我一直在创建以将 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)

要在多行语句中使用它,您可以考虑查看 link.

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: What is the difference between test, [ and [[ ?