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
Bash脚本循环

退出 While 循环

break命令终止当前循环,并控制该循环之后的下一个命令。
你可以利用这个过程退出诸如 forwhile等循环。
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命令会忽略当前迭代的外部循环内部的命令,并将控制权交给下一个循环。
我们可以使用此命令在不退出循环的情况下停止执行循环内剩余的命令。

日期:2020-07-15 11:16:52 来源:oir作者:oir