Linux 如何使用while循环在UNIX中正确执行此代码?

Linux 如何使用while循环在UNIX中正确执行此代码?,linux,shell,unix,Linux,Shell,Unix,我正在尝试在UNIX中编写符合以下条件的脚本: 命名脚本while.sh 要求用户输入一个正整数。您可以假设用户将输入一个正整数(不需要输入验证) 使用while循环打印从0到输入的整数(包括输入的整数)的所有整数 前两步很简单,但我无法正确执行第三步。有人能帮我吗?这是您想要的脚本: echo -n "Enter a positive integer: "; read integer While [ $integer -gt 0 ]; do echo "$integer" do

我正在尝试在UNIX中编写符合以下条件的脚本:

  • 命名脚本
    while.sh
  • 要求用户输入一个正整数。您可以假设用户将输入一个正整数(不需要输入验证)
  • 使用while循环打印从0到输入的整数(包括输入的整数)的所有整数

  • 前两步很简单,但我无法正确执行第三步。有人能帮我吗?

    这是您想要的脚本:

    echo -n "Enter a positive integer: "; read integer
      While [ $integer -gt 0 ]; do
        echo "$integer"
      done
    
    这是一个例子:

    #!/bin/bash
    
    echo -n "Enter a positive integer: "; read integer
    while [ $integer -gt 0 ]; do
        echo "$integer"
        integer=`expr $integer - 1`
    done
    

    这是我想出的剧本。我可能认为这有点字面意思,但是您的问题要求显示输入的数字的0

    ./while.sh 
    Enter a positive integer: 10
    10
    9
    8
    7
    6
    5
    4
    3
    2
    1
    
    下面是上面的输出:

    #! /bin/bash
    
    i=0
    
    echo -n "Enter a positive integer: "
    read integer
    
    while [ $integer -ge $i ]
     do
      echo "$i"
      ((i++))
    done
    

    使用
    expr
    增加一个变量:
    x=`expr$x+1`
    您需要一个“计数器”变量,该变量从0开始,大于用户值时停止。我不知道expr命令,这在将来会很有用,感谢您的输入。不要将
    expr
    用于整数算术;使用POSIX算术表达式
    x=$((x+1))
    。或者干脆
    ((-integer))
    你就是炸弹!非常感谢。
    ((-integer))
    不是标准的shell命令;只有一些外壳可以支撑它。相反,使用
    integer=$((integer-1))
    甚至
    :$((-integer))
    。这是另一种思考方法。我喜欢你的方式,因为它是按升序排列的,而不是按降序排列的。
    Enter a positive integer: 11
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11