2 variables syntax bash for-loop
以下所有这些选项都可用于设置i计数.
count=5
for (( i=count; i>=0; i-- )); do
echo "$i"
done
for (( i=$count; i>=0; i-- )); do
echo "$i"
done
for (( i=$((count)); i>=0; i-- )); do
echo "$i"
done
for (( i=${count}; i>=0; i-- )); do
echo "$i"
done
Run Code Online (Sandbox Code Playgroud)
哪个是正确的还是首选的?
一般情况下,在运算环境下,比如((...))和$((...)),仅名称引用变量,不将$前缀(如你的命令已经相对于变量做$i):
for (( i=count; i>=0; i-- )); do
echo "$i"
done
Run Code Online (Sandbox Code Playgroud)
由于((...))算术上下文本身,没有充分的理由使用单独的,扩展的算术上下文$((count))- 在其中.
需要注意的是$count和${count}是等价的,并包围变量名称- count-中{和}后,$仅需要从后面的字符也可以合法的变量名(不适用于你的命令)的一部分歧义的变量名.
正如Gordon Davisson指出的那样,有些人选择总是使用${var}表格来保持视觉清晰度.
虽然$算术上下文中的前缀变量引用确实有效,但很少有理由使用它们:在算术评估之前使用$引入额外的扩展步骤,这不仅是不必要的,而且可能导致不同的行为,如rici的有用答案.
在这里你只案件需要的$前缀:
要引用位置和特殊参数(变量)只能永远被引用有 $:谢谢,罗杰斯国际商品指数.
$1,$2,...$#$?,$$,$!(还有其他人,但他们不是一般的数字 -见章节Special Parameters中man bash).如果您需要通过参数扩展提供的非零默认值 ; 例如,${count:-2}默认为2if $count未设置或为空.
如果要将变量值用作运算符而不是操作数; 例如:
op='*'; echo $(( 2 $op 2 ))- 这不适合op.