Shell 脚本中的 While 循环帮助

Shell 脚本中的 While 循环帮助

我是 Shell 脚本的新手,因此我对以 Shell 脚本形式使用 While 循环感到好奇。

我知道如何在 Java 中声明变量并使用 while 循环

int num = 0;
while(num <= 10)
{
    System.out.println(num)
    num = num + 1
}

但是我不知道如何在 Shell 脚本中的 while 循环中声明变量并使用它们。

答案1

有多种方法可以做到这一点,但最接近您的 Java 示例的 shell 脚本是这样的:

num=0
while test $num -le 10; do
    echo $num
    num=$((num+1))
done

实现相同目的的更“shell-ish”的方法是

printf '%s\n' {0..9}

但请注意,该{0..9}构造是一种“bashism”,它在标准(POSIX)shell 中不起作用。

答案2

你会更乐意使用for循环(根据你的例子)

for i in {0..10}; do
    echo "$i"
done

如果你必须使用while循环,考虑以下内容

i=0
while [[ $i -le 10 ]]; do
    echo "$i"
    i=$((i+=1))
done

答案3

还有一种简单的方法:

num=0
while (($num <= 10)); do
    echo "$num"
    ((num++))
done

这在 bash 中可以工作,但在标准 POSIX shell 中则不行。

答案4

这个 Bash 脚本站点应该可以帮到你,一般来说你不需要在使用变量之前声明它们:

http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-7.html

相关内容