Bash for循环在300次循环后结束?

时间:2011-09-19 19:21:35

标签: bash shell

我有一个非常有趣的问题,在我的下面的bash脚本中,for循环以某种方式在300循环后停止(我有时需要它执行超过600)。

#!/bin/bash

for i in `seq $1 $2`;
do

composite $i".png" $i"_temp.png" $i"_out.png"

done

我在使用300多个循环运行其他语言的同一命令时没有遇到任何问题。我不知道bash会发生什么。

另外,我注意到在第300个循环之后,脚本不会退出,而是“暂停”。

我目前正在使用此方法解决此问题,方法是将脚本从1运行到250,然后从251运行到500,等等。

3 个答案:

答案 0 :(得分:5)

我想知道这可能是对反引号中可以替换的输出量的限制,但是我无法在我的Linux系统上重现它,并且令人惊讶的是你显然没有看到任何错误消息。但是,您可以尝试替代当前脚本的方法仍然是使用seq,但将其结果传递给while read循环,这样可以避免替换:

seq $1 $2 | while read i
do
    composite $i".png" $i"_temp.png" $i"_out.png"
done

答案 1 :(得分:1)

为什么不使用while循环?

i=0
while [ $i -le $1 ]
    do 
        composite $i".png" $i"_temp.png" $i"_out.png"
        i=$((i + 1))
    done

答案 2 :(得分:0)

无需使用外部命令

for ((i=$1; i<=$2 ;i++))
do
  composite "${i}.png" "${i}_temp.png" "${i}_out.png"
done