bash嵌套while:外部循环只执行一次

时间:2015-07-21 11:23:54

标签: bash while-loop nested-loops

以下bash脚本中的外部循环只执行一次,但应该执行四次:

#!/bin/bash 
NX="4"
NY="6"
echo "NX = $NX, NY = $NY"
IX="0"
IY="0"
while (( IX < NX ))
do
  while (( IY < NY ))
  do
    echo "IX = $IX, IY = $IY";
    IY=$(( IY+1 ))
  done;

  IX=$(( IX+1 ))
done

我也尝试将循环变量声明为declare -i NX=0(没有引号),但无论哪种方式,我得到的输出都是

NX = 4, NY = 6
IX = 0, IY = 0
IX = 0, IY = 1
IX = 0, IY = 2
IX = 0, IY = 3
IX = 0, IY = 4
IX = 0, IY = 5

这是什么原因以及如何解决?请注意,我更愿意保留NX="4"NY="6"(带引号),因为这些内容实际上来自其他脚本。

1 个答案:

答案 0 :(得分:4)

您需要在IY0后重置为5。改为:

#!/bin/bash 
NX="4"
NY="6"
echo "NX = $NX, NY = $NY"
IX="0"
IY="0"
while (( IX < NX ))
do
  while (( IY < NY ))
  do
    echo "IX = $IX, IY = $IY";
    IY=$(( IY+1 ))
  done;
  IY="0"
  IX=$(( IX+1 ))
done
相关问题