对于没有列表或终止条件的循环shell脚本?

时间:2015-06-16 19:16:35

标签: bash shell unix for-loop

在实习期间,我在剧本中看到了这一点。我用谷歌搜索了但是为了我的生命 我无法弄清楚这是什么样的for循环。

 # Declare variables for use
 35   args=$*
 36   noofargs=$#
 37   isjavapassed="false"
 38   isjavavalid="false"
 39   argsarray=""
 40   d64option=""
 41
 42  varcount=0;
 43  for tempvar
 44  do ....

这个for循环如何工作?它真的只适合tempvar?终止条件或迭代的列表在哪里?除此之外没有什么可以评论。任何帮助深表感谢。谢谢。

2 个答案:

答案 0 :(得分:2)

Looping Constructs上的Bash参考手册部分:

  

for命令的语法是:

     

代表名称[[in [words ...]]; ]做命令;完成

     

展开单词,并对结果列表中的每个成员执行一次命令,其名称绑定到当前成员。如果'in words'不存在,for命令会对设置的每个位置参数执行一次命令,就好像已经指定'in“$ @”'一样(参见特殊参数)。返回状态是执行的最后一个命令的退出状态。如果单词扩展中没有项目,则不执行任何命令,返回状态为零。

这就是“缺少单词”的情况,因此它会循环遍历位置参数。

答案 1 :(得分:1)

语法基础是:

for arg in [list]
do
 command(s)...
done
  

省略for循环的in [list]部分会导致循环运行   on $ @ - 位置参数。

尝试使用和不使用参数运行以下脚本:

for a
do
 echo -n "$a "
done

SOURCE例11-6