For 循环括号 - 类似 C 的语法

For 循环括号 - 类似 C 的语法

当我使用以下语法迭代时为什么需要两个括号?

for (( expr1; expr2; expr3 ))
do
 command1
 command2
 ..
done

并且下面的代码不起作用?并抛出错误“意外标记“(”附近出现语法错误

for ( expr1; expr2; expr3 )
do
 command1
 command2
 ..
done

答案1

其原因(有不同的含义。从bash联机帮助页:

        (list) list 在子shell环境中执行
               (参见下面的命令执行环境)。多变的
               影响 shell 的赋值和内置命令
               命令执行后环境不再有效  
               完成。返回状态是list的退出状态。

        ((表达))
               表达式按照规则求值
               如下所述算术评估。如果  
               表达式的值非零,返回
               状态为0;否则返回状态为 1。这是
               完全等同于 let “表达式”。

相关内容