最近我被以下情况弄糊涂了。两种if
用法之间的区别是什么:
案例1
amount=10
if [[ $amount -eq 10 ]]
then
echo "something"
fi
脚本输出:
$ ./1.sh
something
案例2
if [[ amount -eq 10 ]]
这也与此类似(请注意,变量名不包含$
)。
所以问题是,即使变量名中没有美元符号,它是如何工作的。
附言:我在HP-UX上使用POSIX shell。
man bash
算术评估。。。允许将外壳变量作为操作数;参数扩展是根据在表达式求值之前形成。在表达式中,shell变量也可以按名称引用,而不使用参数扩展语法。
在这个上下文中,shell除了数字之外什么都不期望,所以它将字符串扩展为变量。这对我来说很有意义。