[shell script] break, continue
15807 ワード
break
:breakを読むとすぐにbreakが属する重複文を終了します.continue
:continueの読み取りから、次のコードをスキップして次の繰り返しを行います.例えば、0から10に増加したインデックスのうち、インデックスが5の場合、
break
およびcontinue
にそれぞれ書き込まれる場合、差は非常に顕著である.$ cat test1
#!/bin/bash
for (( i = 0; i <= 10; i++ ))
do
if (( $i == 5 ))
then
break
fi
echo "i -> $i"
done
$ ./test1
i -> 0
i -> 1
i -> 2
i -> 3
i -> 4
以上のようにi = 5
の場合、break
に遭遇した場合は、for
の扉を閉める.4
にのみ出力されます.逆に
break
位でcontinue
を使うとどうなるでしょうか?$ cat test1
#!/bin/bash
for (( i = 0; i <= 10; i++ ))
do
if (( $i == 5 ))
then
continue
fi
echo "i -> $i"
done
$ ./test1
i -> 0
i -> 1
i -> 2
i -> 3
i -> 4
i -> 6
i -> 7
i -> 8
i -> 9
i -> 10
continue
が使用される場合、i = 5
においてcontinue
が検索され、次にコードがスキップされ、次の反復が行われる.したがって、
5
を除き、残りの結果は出力される.冗長for文から外部ループを終了またはスキップ
break
は、break
に属する重複文を終了する.j = 2
の場合、break
に遭遇すると、j
を迂回したfor
のドアは完全に閉じられ、その後はj = 3, 4
は実行されない.外転
i
のfor
ゲートには全く影響しません.$ cat test1
#!/bin/bash
for (( i = 1; i <= 4; i++ ))
do
echo "i -> $i"
for (( j = 1; j <= 4; j++ ))
do
if (( $j == 2 ))
then
break
fi
echo " j -> $j"
done
done
$ ./test1
i -> 1
j -> 1
i -> 2
j -> 1
i -> 3
j -> 1
i -> 4
j -> 1
しかし、ここでは、i
の周りを回るfor
のドアを閉じる方法があります.break n
n
のデフォルト値は1
で、現在属しているループを示します.数字を1つ増やすたびに、
바깥쪽
ループを指します.break 2
が与えられると、外部i
を回転させるループは終了する.$ cat test1
#!/bin/bash
for (( i = 1; i <= 4; i++ ))
do
echo "i -> $i"
for (( j = 1; j <= 4; j++ ))
do
if (( $j == 2 ))
then
break 2
fi
echo " j -> $j"
done
done
$ ./test1
i -> 1
j -> 1
continue
は、continue
が属する重複文の内容から次のコードをスキップします.continue
で、j = 2
と遭遇した場合は、continue
を回転するj
文で次の内容を省略し、次の反復が表示されます.外転
for
のcontinue
ゲートには全く影響しません.$ cat test1
#!/bin/bash
for (( i = 1; i <= 4; i++ ))
do
echo "i -> $i"
for (( j = 1; j <= 4; j++ ))
do
if (( $j == 2 ))
then
continue
fi
echo " j -> $j"
done
done
$ ./test1
i -> 1
j -> 1
j -> 3
j -> 4
i -> 2
j -> 1
j -> 3
j -> 4
i -> 3
j -> 1
j -> 3
j -> 4
i -> 4
j -> 1
j -> 3
j -> 4
同様に、i
は、パラメータによって外輪の内容をスキップすることもできる.$ cat test1
#!/bin/bash
for (( i = 1; i <= 4; i++ ))
do
echo "i -> $i"
for (( j = 1; j <= 4; j++ ))
do
if (( $j == 2 ))
then
continue 2
fi
echo " j -> $j"
done
done
$ ./test1
i -> 1
j -> 1
i -> 2
j -> 1
i -> 3
j -> 1
i -> 4
j -> 1
Reference
この問題について([shell script] break, continue), 我々は、より多くの情報をここで見つけました https://velog.io/@khyup0629/shell-script-break-continueテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol