continue语句
在上一个示例中,我们使用'continue'命令执行与Bash脚本中'while'循环中的'break'命令相同的操作。
i=0 while [[ $i -lt 10 ]]; do ((i++)) if [[ "$i" == '5' ]]; then continue fi echo "Number: $i" done
bash shell For 循环
在 Linux 中,循环是我们用来以指定的时间间隔重复执行命令的方式。
Linux 中有多种不同类型的循环。
下面是一个for循环示例:
#!/bin/bash for y in a b c d w x y z > do > echo $y done
迭代简单值
我们可以在 Bash 脚本中使用 for
命令。
我们首先需要在 Linux 终端中创建一个文本文件。
$ touch script
一般脚本使用.sh
文件扩展名。 这里,为了演示我们使用script
。
编辑该文件,添加脚本内容
$ nano script
注意,文件前面必须包含 #!/bin/bash
,它会通知 Bash 脚本使用哪个 shell。
#!/bin/bash for var in first second third fourth fifth; do echo The $var item done
迭代复杂值
对于较复杂的字符串,我们需要将它们括在引号中来引用它们:
#!/bin/bash for var in first "the second" "the third" "I’ll do it"; do echo "This is: $var" done
命令替换
我们还可以在 Bash 脚本的 for
命令中使用命令替换。
#!/bin/bash my_file="file01" for var in $(cat $my_file); do echo " $var" done
我们使用了 Bash 子shell 的命令替换,$()
;
这允许我们使用 cat
命令来获取文件的内容输出并假设每一行都有一个单词。
但是,如果其中一行中有空格,则每个单词都将被视为一个字段。
在这种情况下,我们需要告诉 shell 将新行视为分隔符而不是空格。
字段分隔符
默认情况下,Bash shell 将以下字符视为字段。
- 空格符
- tab制表符
- 换行符
如果文本包含这些字符中的任何一个,shell将假定它是一个新字段,如果需要使用这些字符,则必须更改内部字段分隔符或者IFS环境变量。
$ IFS=$'\n'
上面的语法将导致 Bash shell 将换行符而不是空格字符视为分隔符。
#!/bin/bash file="/etc/passwd" IFS=$'n' for var in $(cat $file); do echo " $var" done
我们还可以使用“IFS”将字段分隔符设置为冒号,如下所示。
$ IFS=:
迭代目录文件
我们还可以在 Bash 脚本中使用 for
循环来列出主目录中的文件。
#!/bin/bash for obj in /home/ubuntu/*; do if [ -d "$obj" ]; then echo "$obj is a folder" elif [ -f "$obj" ]; then echo "$obj is a file" fi done
遍历文件行
我们可以在 Bash 脚本中使用 for
循环来迭代文件内容:
#!/bin/bash IFS=$'n' for text in $(cat /etc/passwd); do echo "This line $text ++ contains" IFS=: for field in $text; do echo " $field" done done
多个 for 循环(嵌套 for)
示例:
for y in a b c d e f do for u in a b c d e f do echo "$y$u" done done
退出 For 循环
我们可以在“for”循环中使用这些循环控制命令。
我们将使用 break
命令退出 Bash 脚本中的 for
循环。
#!/bin/bash for number in 10 11 12 13 14 15; do if [ $number -eq 14 ]; then break fi echo "Number: $number" done
退出 While 循环
break
命令终止当前循环,并控制该循环之后的下一个命令。
你可以利用这个过程退出诸如 for
、while
等循环。break
命令的语法如下:
$ while [ condition ] do commands break done
bash shell break 命令
我们可以使用 break 命令退出任何循环,例如 while 和 until 循环。
#!/bin/bash for number in 10 11 12 13 14 15; do if [ $number -eq 14 ]; then break fi echo "Number: $number" done
Bash 脚本 While 循环
for循环不是Bash脚本中循环的唯一方式。
“while”循环做同样的工作,但它在每次迭代之前检查一个条件。
下面可以看到“while”循环的结构。
while [ condition ] do commands done
Bash 脚本 while循环示例:
#!/bin/bash number=10 while [ $number -gt 4 ]; do echo $number number=$(($number - 1)) done
多个while循环(嵌套while)
示例:
while [condition] do statements1 statements2 while [condition] do continue done statements3 done
C语言风格格式的for循环
有两种方法可以编写shell for
循环;
标准的 Linux 方式(我们在本教程开头已经介绍过)和“C 风格”方式。
C语言风格for循环:
for (var= 0; var < 5; var++) { printf(“number is %dn”, var); }
Linux风格:
#!/bin/bash for ((var = 1; var <= 10; var++)); do echo "number is $var" done
shell 嵌套循环
我们可以在其他循环中创建循环,例如“while”循环。
循环中的这些循环称为嵌套循环。
我们将通过首先检查如何在以下示例中创建嵌套的 for
循环来深入研究这些。
bash shell continue命令
Bash continue
命令会忽略当前迭代的外部循环内部的命令,并将控制权交给下一个循环。
我们可以使用此命令在不退出循环的情况下停止执行循环内剩余的命令。