【问题标题】:BASH , for loop subtracting a numberBASH , for 循环减去一个数字
【发布时间】:2021-02-14 03:30:09
【问题描述】:

在 BASH 中,

我正在尝试创建一个将数字减去 2 的 for 循环

(免得说 number=8 ,所以我想打印 6, ,4 , 2 )

这个语法有什么问题?

 for (( $number; $number>= 0;$number --2));
do  
  
   echo "$number"
 done

`

谢谢

【问题讨论】:

    标签: bash for-loop decrement


    【解决方案1】:

    我建议:

    #!/bin/bash
    
    number=8
    dec=2
    
    for ((i=$number-$dec; i>0; i=$i-$dec)); do
      echo "$i"
    done
    

    输出:

    6 4 2

    【讨论】:

      【解决方案2】:

      正确的语法是:

      for (( number=8; number>= 0; number=number-2))
      do
        echo "$number"
      done
      

      输出:

      8
      6
      4
      2
      0
      

      但如果您只想要 6、4、2,则需要更改范围:

      #        here v          v and here
      for (( number=6; number>=2; number=number-2))
      ...
      

      另一种语法是:

      $ for number in {6..2..2}
        do         
          echo "$number"
        done
      

      【讨论】:

        【解决方案3】:

        当你想保存写 ((number=number-2)) 的字符时,你可以这样做

        for (( number=8; number>0; number-=2)); do
           echo "$number"
        done
        

        注意上下文,它可能会出错:

        number=8
        while (( number-=2 && number>0 )); do # Example of Wrong use 
           echo "$number"
        done
        

        对于此解决方案,您需要额外的括号

        number=8
        while (( ((number-=2)) && number>0 )); do
           echo "$number"
        done
        

        这些括号使它很容易出错,所以不要使用它。我赞成@Cyrus 的解决方案。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-12-03
          • 1970-01-01
          • 1970-01-01
          • 2011-12-22
          • 1970-01-01
          • 2013-07-19
          • 1970-01-01
          • 2019-01-25
          相关资源
          最近更新 更多