【问题标题】:How to add loop counter to foreach in csh如何在 csh 中为 foreach 添加循环计数器
【发布时间】:2011-07-02 06:39:08
【问题描述】:

在 CSH foreach 循环或 for 循环中,如何添加从 10 增加到 1000 且步长为 20 的循环迭代器或计数器?

类似foreach i (1..20..5)for (i=1;i<20;i++)

【问题讨论】:

    标签: loops foreach counter csh


    【解决方案1】:

    或者你可以使用 expr。以下对我有用(在 tcsh 但 csh 应该是相同的):

    % set n=0
    % foreach x (`ls $A*`)
    foreach? set n=`expr $n + 1`
    foreach? echo $n
    foreach? end
    

    输出是 1 2 3 4 等等

    【讨论】:

      【解决方案2】:

      如果你有seq 命令,你可以使用:

      foreach i (`seq 1 5 20`)
        ... body ...
      end
      

      如果你没有seq,这里有一个基于@csj 答案的版本:

      @ i = 1
      while ($i <= 20)
        ... body ...
        @ i += 5
      end
      

      【讨论】:

      • 或者,对于 BSD 和 OS X:jot - 1 20 5
      【解决方案3】:

      我在网上找到的任何文档似乎都表明没有可用的 for 循环。但是,可以使用 while 循环。我实际上并不了解 csh,因此根据我阅读的内容,以下是近似值:

      set i = 10
      while ($i <= 1000)
          # commands...
          set i = $i + 20
      end
      

      【讨论】:

      • 其实应该是@ i = 1@ i = $i + 1
      • @Dennis 感谢您的语法更正。至于值,问题要求一个计数器,以 20 为步长从 10 变为 1000。因此,初始值为 10,并且每次通过循环时 + 20。
      • 使用 foreach 调用 csh for 循环。事实上,如果你在 google 搜索框中输入“csh for”,它就会将 foreach 显示为第一个选项。
      猜你喜欢
      • 2014-12-22
      • 2016-07-14
      • 1970-01-01
      • 2017-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-22
      相关资源
      最近更新 更多