我得到了这个简单的脚本,假设要创建一堆帐号,它应该包含两个值:起始帐号和要创建的帐号。我们去的时候增加帐号。例如:
./ pre_v_test.sh 123 3 应该给出
123
124
125
现在就这样做,只有一个问题:它完成后无法停止。 结果看起来更像是这样:
....
Writing subsriber: 102145
lalala
Writing subsriber: 102145
lalala
Writing subsriber: 102145
lalala
....
你明白了。
以下是代码:
#!/bin/bash
i_loop="0"
while [ $i_loop -lt $2 ]
do
i_subscriber=`expr $1 + $i_loop`
echo Writing subsriber: $i_subscriber
#actual account details here, not relevent to the question
echo "lalala"
done
我在这里看了一个while循环的例子(http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_09_02.html)但是对于我的生活,我无法发现差异,是什么让他的工作和我的失败?此外,截至两个月前,这个脚本正在运行。和现在唯一的区别是,它最后一次是在真正的SUSE上,而这次它是在vmware上的SUSE上。
谢谢大家 戴维答案 0 :(得分:2)
您没有增加变量:
#!/bin/bash
i_loop=0
while [ $i_loop -lt $2 ]
do
i_subscriber=`expr $1 + $i_loop`
echo Writing subsriber: $i_subscriber
i_loop=`expr $i_loop + 1`
done
答案 1 :(得分:1)
根本原因是你的变量$ i_loop将永远= 0,总是小于$ 2 你需要添加
let i_loop=$i_loop + 1
somwhere在循环内。