【发布时间】:2017-07-08 09:27:01
【问题描述】:
$ 符号可以在 let 和 (( ... )) 结构中省略。
鉴于$ 在使用if 或while 时是强制性的,为什么会这样?
【问题讨论】:
-
因为$放在((因此指定双括号内的变量需要展开。
-
我认为这来自 ksh,所以答案将是 因为 David Korn 在他的 shell 添加
$(())、(())和let时想要这样做。 -
顺便说一句:考虑到
let和@ 987654336@也可以作为if和while的条件句;例如,if let 'foo == 1'; then echo yes; else echo no; fi或if (( foo == 1 )); then echo yes; else echo no; fi。 -
@RamanSailopal:请注意,问题是关于使用
$inside(( … )),以便引用变量,而不是关于(( … ))和$(( … ))。此外,是否以及使用什么语法变量在内部扩展与选择(( … ))或$(( … ))无关 - 唯一的区别是后者 输出 算术计算的结果,而前者没有。