Linux (loopcount=loopcount+;1)和((loopcount=loopcount+;1))之间有什么区别?
为此,我得到的o/p是这样的Linux (loopcount=loopcount+;1)和((loopcount=loopcount+;1))之间有什么区别?,linux,shell,while-loop,Linux,Shell,While Loop,为此,我得到的o/p是这样的 loopcount=1 loopmax=5 while [ $loopcount -le $loopmax ] do echo "loop iteration :$loopcount" ((loopcount=loopcount+1)) done 但如果我将程序((loopcount=loopcount+1))更改为(loopcount=loopcount+1),我将得到以下输出 loop iteration :1 loop iteration :2 loop i
loopcount=1
loopmax=5
while [ $loopcount -le $loopmax ]
do
echo "loop iteration :$loopcount"
((loopcount=loopcount+1))
done
但如果我将程序((loopcount=loopcount+1))更改为(loopcount=loopcount+1),我将得到以下输出
loop iteration :1
loop iteration :2
loop iteration :3
loop iteration :4
loop iteration :5
得到无限次。()和(())的区别是什么?(…)
表示在子shell中运行给定的命令((…)
表示在参数内进行算术运算
请注意,子shell不能更改父shell的变量,因此在您的示例中,您永远不会更新父shell中loopcount的值。此外,在您的单个参数示例中,您不会进行算术运算,而是将字符串loopcount+1
分配给变量loopcount
,这样,如果您执行printf“%s\n”“$loopcount”
,之后您将获得输出loopcount+1
(…)
表示在子shell中运行给定命令((…)
表示在参数内进行算术运算
请注意,子shell不能更改父shell的变量,因此在您的示例中,您永远不会更新父shell中loopcount的值。另外,在您的单参数示例中,您不会进行算术运算,而是将字符串
loopcount+1
分配给变量loopcount
,这样,如果您执行printf“%s\n”“$loopcount”
,之后您将从man bash
获得输出loopcount+1
:
(list)
list在子shell环境中执行(请参见下面的命令执行环境)。影响shell环境的变量指定和内置命令在命令完成后不会保持有效。返回状态是列表的退出状态
[……]
((表达式))
表达式根据下面“算术求值”下描述的规则求值。如果表达式的值为非零,则返回状态为0;否则返回状态为1。这完全等同于让“表达式”
从
manbash
:
(list)
list在子shell环境中执行(请参见下面的命令执行环境)。影响shell环境的变量指定和内置命令在命令完成后不会保持有效。返回状态是列表的退出状态
[……]
((表达式))
表达式根据下面“算术求值”下描述的规则求值。如果表达式的值为非零,则返回状态为0;否则返回状态为1。这完全等同于让“表达式”
“复制”的“复制”的“复制”
loop iteration :1
loop iteration :1
loop iteration :1
loop iteration :1
loop iteration :1
loop iteration :1