Shell脚本中的while循环
今天,我们将了解Shell脚本中的while循环。
循环是任何编程语言的重要组成部分。
当我们编写代码以执行一组语句15次时,一次又一次地编写同一条语句将毫无用处。
循环可以节省程序员的时间。
在任何编程语言中,最常用的循环之一是while循环。
只要在每次迭代后满足给定条件,我们就会在shell脚本中使用while循环来重复一组语句。
Shell脚本中的while循环如何工作?
Shell脚本中的while循环通过减少需要编写的代码量来帮助您提高代码效率。
当您需要一遍又一遍地在脚本中执行某些操作时,它会派上用场。
让我们通过它的语法了解shell脚本中while循环的工作方式:
while [ condition ] do statement 1 statement 2 done
其中我们有三个关键字,分别是while,do和done。
第一个关键字" while"表示运行shell脚本时循环的开始。
其次是用圆括号括起来的条件。
在循环中要执行的语句之前使用关键字" do"。
每个while循环都包含一个条件,后跟一组命令。
然后,我们遇到了完成关键字,它标记了循环的结束。
将do and done视为其他编程语言中的左括号和右括号
首先,评估条件。
如果条件为TRUE,则将执行do之后的语句。
重复此操作,直到条件评估为FALSE为止。
一旦条件为假,循环将终止。
要记住的重要一点是,与C编程一样,shell脚本也区分大小写。
因此,在代码中使用关键字时需要小心。
如果您对学习条件语句感兴趣,请单击此处以了解Shell脚本中的if-else。
在shell脚本中使用while循环
除非您可以在代码中实际使用它,否则通读理论并浏览语法不会对您有帮助。
因此,为了更好地理解该概念及其实际应用,请查看以下示例。
While循环打印前5个数字
最好总是从一些基本的东西开始。
其中我们将使用shell脚本中的while循环在屏幕上打印前5个自然数。
当变量" a"的值小于(" -lt")5时,此简单脚本将循环播放。
条件适用于1到4的数字,因此,将对该命令执行相同的命令。
对于大于或者等于5的任何数字,条件为假。
因此,循环将终止。
这是代码的编写方式。
#!/bin/sh a=1 while [ $a -lt 5 ] do echo $a ((a++)) done
在Shell脚本中使用while循环查找阶乘
一个更实际的示例是使用while循环的功能来完成任务。
让我们找到数字的阶乘。
以下代码显示了如何使用while循环完成此任务。
#!/bin/sh counter=5 factorial=1 while [ $counter -gt 0 ] do factorial=$(( $factorial * $counter )) ((counter--)) done echo $factorial
Bash阶乘While循环
如您所见,while循环的阶乘正确打印为120。
使用while循环在Shell脚本中读取文件
当我们处理文本文件时,while循环是一个重要的工具,因为我们可以使用while read命令使循环读取整个文件。
此命令可以帮助我们从命令行读取文件的内容。
以下代码使用Shell脚本中while循环的此功能一次读取一行文件的内容,然后在用户屏幕上打印该文件。
#!/bin/bash FILE= while read line do # use $line variable to process line echo $line done < $FILE
While循环进行文件读取
如您所见,我已将文件名作为参数传递,因为在我们的shell脚本中,我们使用了$1并将其分配给FILE变量。
这意味着第一个参数将被接受为文件名,并且脚本将继续读取文件。
此外,完成后,我们在脚本内使用输入重定向运算符,因此在执行脚本时可以将文件名直接用作参数。
如果跳过这一部分,您的命令将类似于以下内容:
bash file.sh < filename.txt
因此,您可以看到在脚本内或者在执行脚本时重定向输入。
结果是一样的。