Answers:
在第一个示例中,$((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
这具有所需的副作用,节省了一行,而且非常清楚。