如果声明直到满足要求,我怎么能循环我的bash

时间:2015-05-19 08:36:26

标签: bash

如果你执行bash launch_script.sh 5 6代码,但是如果我bash launch_script.sh 6 5它会询问新的起始值,但是它没有在脚本中使用它,那么代码就会起作用 - 脚本就会结束。

#!/bin/bash
a=$1
b=$2
if [ $1 -gt $2 ]
then 
    echo "$1 is bigger then $2, plz input new start number"
    read -p "You're start number will be?: "
else
    until [ $a -gt $b ];
    do
        echo $a
        ((a++))
    done
fi

1 个答案:

答案 0 :(得分:1)

循环未执行,因为它是else块的一部分。如果您想要始终运行循环,请将其放在if

的结尾之后
#!/bin/bash
a=$1
b=$2
if (( $1 > $2 )) ; then 
    echo "$1 is bigger then $2, plz input new start number"
    read -p "You're start number will be?: " a
fi

until (( $a > $b )) ; do
    echo $((a++))
done

要遍历read语句,只需引入一个类似的循环:

#!/bin/bash
a=$1
b=$2
while (( $a > $b )) ; do
    echo "$1 is bigger then $2, plz input new start number"
    read -p "You're start number will be?: " a
done

until (( $a > $b )) ; do
    echo $((a++))
done

请注意,我修复了代码中的几个问题:

  • read可以将值直接分配给变量。
  • 代码应缩进以便于阅读。
  • 我还使用了更容易理解的(( arithmetic condition ))语法,并包含了回显的增量。