在POSIX Shell中,在变量前/后递增时,这两个示例之间有什么区别。它们似乎会产生相同的结果,但是使用方式会有所不同吗?您什么时候比另一个更喜欢?
X=$((X+1))
: $((X=X+1))
在第一个示例中,$((X+1))
计算表达式X +1并扩展为结果,然后将结果赋给变量。
在第二个示例中,以一个$((X=X+1))
增量递增X
($((X++))
也是有效且较短,但shell不一定支持),然后扩展为的新值$X
,这是null命令的第一个参数:
。null命令将忽略其参数,并且结果将被丢弃(具有副作用)。
由于三个(相对主观的)原因,我个人更喜欢第一种形式:
如果您只修改一个命令的环境,则必须使用第一个版本,例如
X=$((X+1)) /usr/local/bin/something
您必须使用第二种形式将评估直接添加到参数中:
ls -la "file-$((X++))" # or ...
ls -la "file-$((X=X+1))" # for better compatibility
这具有所需的副作用,节省了一行,而且非常清楚。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句