字符串是算术表达式吗?

字符串是算术表达式吗?

在 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在您的情况下,这不是您认为的字符串,而是一个未定义变量的名称,该变量的值为零。

相关内容