Bash Post增量

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,这样它的工作正常,所以从一开始就是我的错误.

Ken*_*ent 5

两种情况都合理合理.

foo++将首先返回当前值(在自动递增之前)foo,然后自动递增.

在你的第一种情况下,如果你改变echo "CONT: $VAR",它将给出与案例2相同的结果.

如果你想拥有1,2,3...自动增量,你可以尝试:

echo "CONT: $((++CONT))"
Run Code Online (Sandbox Code Playgroud)