Jor*_*eFG 1 bash post-increment
关于在bash中进行后增量的正确方法的一个小问题.
while true; do
VAR=$((CONT++))
echo "CONT: $CONT"
sleep 1
done
Run Code Online (Sandbox Code Playgroud)
在这种情况下,VAR从1开始.
CONT: 1
CONT: 2
CONT: 3
Run Code Online (Sandbox Code Playgroud)
但如果我这样做:
while true; do
echo "CONT: $((CONT++))"
sleep 1
done
Run Code Online (Sandbox Code Playgroud)
它从0开始.
CONT: 0
CONT: 1
CONT: 2
Run Code Online (Sandbox Code Playgroud)
似乎第一种情况表现良好,因为((CONT ++))会评估CONT(undefined,¿0?)并添加+1.
如何获得像in echo语句一样的行为来赋值给变量?
编辑:在我的第一个例子中,我应该回应VAR,而不是回应CONT,这样它的工作正常,所以从一开始就是我的错误.
两种情况都合理合理.
foo++将首先返回当前值(在自动递增之前)foo,然后自动递增.
在你的第一种情况下,如果你改变echo "CONT: $VAR",它将给出与案例2相同的结果.
如果你想拥有1,2,3...自动增量,你可以尝试:
echo "CONT: $((++CONT))"
Run Code Online (Sandbox Code Playgroud)