Tim*_*Tim -4 shell bash arithmetic
在 Bash 中,我使用了一个需要算术表达式的字符串:
$ (( hello ))
$ echo $?
1
$ echo $(( hello ))
0
$ let aaa=hello
$ echo $?
1
$ echo $aaa
0
Run Code Online (Sandbox Code Playgroud)
没有报告错误。那么字符串是算术表达式吗?如果是,字符串的值是否始终为 0?
我的问题来自评论为什么命令不能与以赋值开头的命令一起工作?
在 bash 算术表达式(例如$((3+2)))中,您可以使用变量,就像使用 bash writ large 一样。但是,在这种特殊情况下,您不必使用$字符来表示变量:
ghoti ~$ foo=5
ghoti ~$ echo $((foo))
5
ghoti ~$ echo $((foo*2))
10
ghoti ~$ echo $(($foo*2))
10
Run Code Online (Sandbox Code Playgroud)
正如对您的问题的评论中所述,hello在您的情况下,不是您认为的字符串,而是值为零的未定义变量的名称。