Bash While循环教程

LinuxBash类似于一种编程或脚本语言,它提供了与C#、PHP、Python、C等编程语言类似的结构。同时,LinuxBash也提供了while循环,它只是用来迭代多个项目,这些项目可以是数字、文件、文件夹、用户等。

null

Bash While循环语法

bash-while循环非常灵活,它提供了多种可使用的语法。最原始和最流行的语法如下所示。

while [CONDITION]do   CODEdone
  • [条件] 在while循环的每次迭代中检查的条件。如果条件为真,则循环继续;如果条件不为真,则循环结束。
  • 代码 是在每次迭代中执行的一行或多行代码。
  • 用于启动while循环代码块的语句。
  • 完成 用于结束while循环代码块的语句。

或者,while循环可以表示为一行,如下所示。

while [CONDITION]; do CODE; done

数字的While循环

我们将从一个简单的例子开始,在这里我们将循环数字。我们将创建一个名为 设置为1,我们将迭代直到x达到10。在每次迭代中,x将增加1并打印到屏幕上。

x=1
while [ $x -le 5 ]
do
  echo "Current value of x is $x"
  x=$(( $x + 1 ))
done

这个while循环示例输出如下所示。

Current value of x is 1Current value of x is 2Current value of x is 3Current value of x is 4Current value of x is 5

这个while循环示例也可以表示为一行while循环,如下所示。

x=1 ; while [ $x -le 5 ] ; do echo "Current value of x is $x" ; x=$(( $x + 1 )); done

文件的While循环

while循环可以用来循环文件。我们将使用ls命令和-p选项,该选项将列出带有斜杠(/)符号的目录。通过使用grep,我们将删除包含斜杠的行,斜杠是目录。输出被重定向到while循环并读入变量 $文件 .

ls -p | grep -v /  | while read file do    echo ${file}done

输出如下。

a.out file1 file2 file3 file4 myfile mylink names.txt newfile nmap-7.91.tar.bz2 random.c read_line_by_line.sh sample.txt test text.txt userinput.py while.sh

目录的While循环

目录上的while循环与文件类似。我们将使用grep命令筛选包含斜杠的文件。

ls -p | grep /  | while read directory 
do 
   echo ${directory}
done

循环目录如下所示。

data1/ data2/ data3/ data4/ data5/ Desktop/ Documents/ Downloads/ Music/ myfolder/ Pictures/ Public/ Templates/ thinclient_drives/ Videos/ year/

文件行的While循环

bash while循环的另一个用例是在文件行上迭代或循环。使用read命令读取文件,并使用 $行 变量。我们将把sample.txt文件重定向到while循环中,并将每一行读入$line变量。

while read line do
  echo "$line"
done < sample.txt

中断While循环

bash while循环在不中断的情况下连续迭代。但在某些情况下,如果满足某些特定条件,我们可能希望停止并退出while循环。break关键字用于中断while循环并退出。在下面的示例中,如果 x美元 等于4。

x=1

while [ $x -le 5 ]
do
  if [ $x -eq 4 ]  then    break  fi  echo "Current value of x is $x"
  x=$(( $x + 1 ))
done

输出如下。

Current value of x is 1Current value of x is 2Current value of x is 3

继续/跳过While循环中的下一步

在bash中while循环的迭代过程中,可以跳过一些步骤。continue语句可用于根据提供的条件跳过某些步骤,这些条件通常由if语句设置。在下面的示例中,如果$x是3,我们将跳过它并继续下一步或迭代。

x=1

while [ $x -le 5 ]
do
  if [ $x -eq 3 ]
  then
    x=$(( $x + 1 ))
    continue  fi
  echo "Current value of x is $x"
  x=$(( $x + 1 ))
done

输出如下。

Current value of x is 1Current value of x is 2Current value of x is 4Current value of x is 5

无限While循环

通常,while循环会迭代特定的次数。但是,除非满足特定条件或进程停止,否则我们可能需要连续迭代。可以使用不同的条件创建无限循环,其中每个条件每次都应返回true。

while true 
do
  echo "I am going to infinite"
done

输出的某些部分如下所示,其中每一行都是相同的。

...I am going to infiniteI am going to infiniteI am going to infiniteI am going to infiniteI am going to infiniteI am going to infiniteI am going to infiniteI am going to infiniteI am going to infiniteI am going to infiniteI am going to infiniteI am going to infiniteI am going to infiniteI am going to infiniteI am going to infinite...

嵌套While循环

另一个while循环可以在bash的while循环中使用。这称为嵌套while循环,因为它们嵌套在一起。

x=0

while [ $x -le 9 ]
do
  y=0

  while [ $y -le 9 ]
  do
    echo "$x$y"
    y=$(( $y + 1 ))
  done  x=$(( $x + 1 ))
done

嵌套while循环的输出如下所示。

000102030405060708091011121314151617181920...99

作为Bash脚本执行While循环

Bash被称为脚本语言,其中Bash脚本可以放入文件中,并像脚本、应用程序或命令一样执行。首先,将while循环放入名为 while.sh文件 . 我们将添加“ #!/垃圾箱/垃圾箱 行以将脚本解释器设置为bash。

#!/bin/bashx=1

while [ $x -le 5 ]
do
  echo "Current value of x is $x"
  x=$(( $x + 1 ))
done

然后我们将使用下面的chmod命令使while.sh文件可以直接执行。

chmod u+x while.sh

现在我们可以像下面这样直接调用bash脚本来运行while循环。

./while.sh

相关文章: 如何在Linux中运行Shell脚本(.sh文件)?

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享