Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux (loopcount=loopcount+;1)和((loopcount=loopcount+;1))之间有什么区别?_Linux_Shell_While Loop - Fatal编程技术网

Linux (loopcount=loopcount+;1)和((loopcount=loopcount+;1))之间有什么区别?

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

为此,我得到的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 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