bash シェルの while ループが条件式を超えています

bash シェルの while ループが条件式を超えています

j私の問題では、値とi値が に達するように見えます6が、iまでしか実行されません5。誰か説明してもらえますか?

i=0;
j=0;
echo "values of $i and $j" > debug.txt;
while [ $j -le 5 ]
do
    j=expr $j + 1
    i=expr $i + 1
    echo "values of $i and $j" >> debug.txt
done;
cat debug.txt;

出力:

value of i is  0 and j is  0
value of i is  1 and j is  1
value of i is  2 and j is  2
value of i is  3 and j is  3
value of i is  4 and j is  4
value of i is  5 and j is  5
value of i is  6 and j is  6

答え1

スクリプトが動作しない理由は、 を使用しているためです-le。これにより、スクリプトは 5 に達したときに 5 に等しいため、まだ実行されると考えてしまいます。-leを に変更します-lt

関連情報