在 Bash 中,我使用需要算术表达式的字符串:
$ (( hello ))
$ echo $?
1
$ echo $(( hello ))
0
$ let aaa=hello
$ echo $?
1
$ echo $aaa
0
没有报告错误。那么字符串是算术表达式吗?如果是的话,字符串的值总是0吗?
我的问题来自评论为什么命令不能与以赋值开头的命令一起使用?
答案1
在 bash 算术表达式(例如$((3+2))
)中,您可以像使用 bash 一样使用变量。但是,在这种特殊情况下,您不必使用字符$
来表示变量:
ghoti ~$ foo=5
ghoti ~$ echo $((foo))
5
ghoti ~$ echo $((foo*2))
10
ghoti ~$ echo $(($foo*2))
10
正如您问题的评论中所提到的,hello
在您的情况下,这不是您认为的字符串,而是一个未定义变量的名称,该变量的值为零。