loopcount=1
loopmax=5
while [ $loopcount -le $loopmax ]
do
echo "loop iteration :$loopcount"
((loopcount=loopcount+1))
done

为了这个我要这样做
loop iteration :1
loop iteration :2
loop iteration :3
loop iteration :4
loop iteration :5

但如果我将程序((loopcount=loopcount+1))更改为(loopcount=loopcount+1),我将得到如下输出。
loop iteration :1
loop iteration :1
loop iteration :1
loop iteration :1
loop iteration :1
loop iteration :1

得到无限次。(和)的区别是什么?

最佳答案

(...)意味着在子shell中运行给定的命令。((...))意味着在parens中进行算术运算。
请注意,子shell不能更改父shell的变量,因此在您的示例中,永远不会更新父shell中loopcount的值。另外,在您的单paren示例中,您不会进行算术运算,而是将字符串loopcount+1分配给变量loopcount,这样,如果在之后执行printf "%s\n" "$loopcount",您将得到输出loopcount+1

关于linux - (loopcount = loopcount + 1)和((loopcount = loopcount + 1))有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35410464/

10-10 17:40