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