MS.*_*Kim 7 shell bash shell-script arithmetic
我们可以在冒号后使用 bash 的条件运算符和赋值运算符吗?
Bash 参考手册解释了算术运算符如下。
expr ? expr : expr= *= /= %= += -= <<= >>= &= ^= |=首先,这段代码似乎运行良好:
a=1; ((a? b=1 : 2 )) #seems to work
Run Code Online (Sandbox Code Playgroud)
但是当我在 之后使用赋值运算符时:,我得到了“尝试赋值给非变量”错误:
a=1; ((a? b=1 : c=1)) #attempted assignment to non-variable error
Run Code Online (Sandbox Code Playgroud)
为什么我们只能在冒号前使用赋值运算符?
Bash 将你的最后一个命令解析为
a=1; (( (a? b=1 : c)=1 ))
Run Code Online (Sandbox Code Playgroud)
这应该清楚为什么它不起作用。相反,你必须使用
a=1; (( a? b=1 : (c=1) ))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26915 次 |
| 最近记录: |