如何编写Bash WHILE-Loops

命令,语法和示例

您可以通过将它们写入脚本文件并运行它来执行一系列命令。

脚本文件只是一个文本文件,通常带有.SH文件扩展名,其中包含一系列也可以从命令行( shell )执行的指令。

while循环示例

下面是一个while循环的例子。 执行时,此脚本文件将在屏幕上打印数字1至9。 while语句为您提供比for循环更多的指定终止条件的灵活性。

#!/ bin / bash count = 1 while [$ count -le 9] do echo“$ count”sleep 1((count ++))done

例如,您可以通过省略增量语句“((count ++))”使前面的脚本无限循环:

#!/ bin / bash count = 1 while [$ count -le 9] do echo“$ count”sleep 1 done

“sleep 1”语句在每次迭代中暂停执行1秒。 使用Ctrl + C 键盘快捷键结束该过程。

您也可以通过将冒号作为条件来创建无限循环:

#!/ bin / bash count = 1 while:do echo“$ count”sleep 1((count ++))done

为了在while循环中使用多个条件,您必须使用双方括号表示法:

count [1] = 0,while [[$ count-9]] && [$ done == 0]]回显“$ count”sleep 1((count ++))if [$ count == 5]; 那么$完成= 1 fi完成

在这个脚本中,变量“done”被初始化为0,然后当count达到5时设置为1.循环条件指出,只要“count”小于9并且“done”相等,while循环将继续归零。 因此,当计数等于5时,循环退出。

“&&”表示逻辑“和”和“||” 意味着逻辑“或”。

连词“和”和“或”在条件中的替代符号是“-a”和“-o”,单个方括号。 以上条件:

[[$ count -le 9] && [$ done == 0]]

......可以改写为:

[$ count -le 9] -a [$ done == 0]

读取文本文件通常使用while循环完成。 在以下示例中,bash脚本逐行读取名为“inventory.txt:”的文件的内容

FILE = inventory.txt exec 6

第一行将输入文件名称分配给“FILE”变量。 第二行将“标准输入”保存在文件描述符“6”中(可以是3到9之间的任何值)。 这样做是为了可以在脚本末尾将“标准输入”恢复为文件描述符“0”(请参阅​​“exec 0”语句)在第3行中,将输入文件分配给文件描述符“0”,对于标准输入,“读取”语句然后在每次迭代时从文件中读取一行并将其分配给“line1”变量。

为了过早地退出while循环,可以使用如下的break语句:

count = 1 done = 0 while [$ count -le 9] do echo“$ count”sleep 1((count ++))if [$ count == 5]然后break fi done echo完成

break语句将程序执行跳到end while循环并执行后面的任何语句。 在这种情况下,声明“回声完成”。

另一方面,continue语句仅跳过当前迭代的while循环语句的其余部分,并直接跳转到下一个迭代:

count = 1 done = 0 while [$ count -le 9] do sleep 1((count ++))if [$ count == 5]然后继续fi echo“$ count”done echo完成

在这种情况下,当变量“count”达到5时,将执行“continue”语句。这意味着后续语句(echo“$ count”)不会在此迭代中执行(当“count”的值为5时)。