bash 嵌套while: 外层循环只执行一次
bash nested while: outer loop executed only once
下面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"
(带引号),因为它们实际上来自另一个脚本。
达到5
后,您需要将IY
重置为0
。更改为:
#!/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
下面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"
(带引号),因为它们实际上来自另一个脚本。
达到5
后,您需要将IY
重置为0
。更改为:
#!/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