ΠΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ Ρ ΡΠΈΠΊΠ»Π°ΠΌΠΈ for/in, ΠΏΡΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° do Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠΈΠΊΠ»Π°, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΡΠ°Π²Π»ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ» ";" ΠΏΠ΅ΡΠ΅Π΄ do.
while [condition] ; do
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ , ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ getopts ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ while, ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Π·Π΄Π΅ΡΡ.
ΠΡΠΈΠΌΠ΅Ρ 10-14. ΠΡΠΎΡΡΠΎΠΉ ΡΠΈΠΊΠ» while
#!/bin/bash
var0=0
LIMIT=10
while [ "$var0" -lt "$LIMIT" ]
do
echo -n "$var0 " # -n ΠΏΠΎΠ΄Π°Π²Π»ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΡΠΎΠΊΠΈ.
var0=`expr $var0 + 1` # Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ var0=$(($var0+1)).
done
echo
exit 0
ΠΡΠΈΠΌΠ΅Ρ 10-15. ΠΡΡΠ³ΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΈΠΊΠ»Π° while
#!/bin/bash
echo
while [ "$var1" != "end" ] # Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π·Π°ΠΌΠ΅Π½Π° Π½Π° while test "$var1" != "end"
do
echo "ΠΠ²Π΅Π΄ΠΈΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ #1 (end - Π²ΡΡ ΠΎΠ΄) "
read var1 # ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ 'read $var1' Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΠ° (ΠΏΠΎΡΠ΅ΠΌΡ?).
echo "ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ #1 = $var1" # ΠΊΠ°Π²ΡΡΠΊΠΈ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ» "#".
# ΠΡΠ»ΠΈ Π²Π²Π΅Π΄Π΅Π½ΠΎ ΡΠ»ΠΎΠ²ΠΎ 'end', ΡΠΎ ΠΎΠ½ΠΎ ΡΠΎΠΆΠ΅ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΠΊΡΠ°Π½.
# ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² Π½Π°ΡΠ°Π»Π΅ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ (ΠΏΠ΅ΡΠ΅Π΄ Π²Π²ΠΎΠ΄ΠΎΠΌ).
echo
done
exit 0
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ while ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠΉ. ΠΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΠΈΠ· Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΡ ΡΠΈΠΊΠ»Π°. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΡΠΈΠΊΠ»Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ½ΡΠΌ.
ΠΡΠΈΠΌΠ΅Ρ 10-16. Π¦ΠΈΠΊΠ» while Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌΠΈ
#!/bin/bash
var1=unset
previous=$var1
while echo "ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ = $previous"
echo
previous=$var1 # Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
[ "$var1" != end ]
# Π ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ "while" ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ 4 ΡΡΠ»ΠΎΠ²ΠΈΡ, Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΈΠΊΠ»ΠΎΠΌ.
# *ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅* ΡΡΠ»ΠΎΠ²ΠΈΠ΅ - Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ.
do
echo "ΠΠ²Π΅Π΄ΠΈΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ #1 (end - Π²ΡΡ ΠΎΠ΄) "
read var1
echo "ΡΠ΅ΠΊΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ = $var1"
done
# ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΡΡΠ΅Π½Π°ΡΠΈΠΈ works.
exit 0
ΠΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ Ρ for, ΡΠΈΠΊΠ» while ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΏΠΈΡΠ°Π½ Π² C-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ Π½ΠΎΡΠ°ΡΠΈΠΈ, Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄Π²ΠΎΠΉΠ½ΡΡ ΠΊΡΡΠ³Π»ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ (ΡΠΌ. ΡΠ°ΠΊ ΠΆΠ΅ ΠΡΠΈΠΌΠ΅Ρ 9-28).
ΠΡΠΈΠΌΠ΅Ρ 10-17. C-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ ΡΠΈΠΊΠ»Π° while
#!/bin/bash
# wh-loopc.sh: Π¦ΠΈΠΊΠ» ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° ΠΎΡ 1 Π΄ΠΎ 10.
LIMIT=10
a=1
while [ "$a" -le $LIMIT ]
do
echo -n "$a "
let "a+=1"
done # ΠΠΎΠΊΠ° Π½ΠΈΡΠ΅Π³ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΠ³ΠΎ.
echo; echo
# +=================================================================+
# Π ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΡΠΎΡΠΌΠΈΠΌ Π² ΡΡΠΈΠ»Π΅ ΡΠ·ΡΠΊΠ° C.
((a = 1)) # a=1
# ΠΠ²ΠΎΠΉΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ Π»ΠΈΡΠ½ΠΈΡ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ² Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ .
while (( a <= LIMIT )) # Π Π΄Π²ΠΎΠΉΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΠ°Ρ ΡΠΈΠΌΠ²ΠΎΠ» "$" ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ.
do
echo -n "$a "
((a += 1)) # let "a+=1"
# ΠΠ²ΠΎΠΉΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π½Π°ΡΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΡΡΠΈΠ»Π΅ ΡΠ·ΡΠΊΠ° C.
done
echo
# Π’Π΅ΠΏΠ΅ΡΡ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ, ΠΏΠΈΡΡΡΠΈΠ΅ Π½Π° C, ΠΌΠΎΠ³ΡΡ ΡΡΠ²ΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠ΅Π±Ρ Π² Bash ΠΊΠ°ΠΊ Π΄ΠΎΠΌΠ°.
exit 0
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π²Π²ΠΎΠ΄Π° stdin, Π΄Π»Ρ ΡΠΈΠΊΠ»Π° while, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²ΠΈΡΡ Π½Π° ΡΠ°ΠΉΠ» Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ < Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠΈΠΊΠ»Π°.
until
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠΈΠΊΠ»Π° until ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π² Π½Π°ΡΠ°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ, Π½ΠΎ Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ while ΠΈΡΠ΅ΡΠ°ΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π»ΠΎΠΆΠ½ΠΎ.
until [condition-is-true] do command... done
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ until ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠΈΠΊΠ»Π° ΠΠΠ ΠΠ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ, Π° Π½Π΅ ΠΏΠΎΡΠ»Π΅, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΈΠ½ΡΡΠΎ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ Ρ ΡΠΈΠΊΠ»Π°ΠΌΠΈ for/in, ΠΏΡΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° do Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠΈΠΊΠ»Π°, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΡΠ°Π²Π»ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ» ";" ΠΏΠ΅ΡΠ΅Π΄ do.
until [condition-is-true] ; do
ΠΡΠΈΠΌΠ΅Ρ 10-18. Π¦ΠΈΠΊΠ» until
#!/bin/bash
until [ "$var1" = end ] # ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π² Π½Π°ΡΠ°Π»Π΅ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ.
do
echo "ΠΠ²Π΅Π΄ΠΈΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ #1 "
echo "(end - Π²ΡΡ ΠΎΠ΄)"
read var1
echo "Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ #1 = $var1"
done
exit 0
10.2. ΠΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΡΠΈΠΊΠ»Ρ
Π¦ΠΈΠΊΠ» Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΌ, Π΅ΡΠ»ΠΈ ΠΎΠ½ ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π²Π½ΡΡΡΠΈ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π°. ΠΠ° ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΡΠΎΡ ΠΎΠ΄Π΅, Π²Π½Π΅ΡΠ½ΠΈΠΉ ΡΠΈΠΊΠ» Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄ΠΎ ΡΠ²ΠΎΠ΅Π³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π² ΡΠ΅Π»ΠΎ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΡΠΈΠΊΠ»Π°. ΠΠ° Π²ΡΠΎΡΠΎΠΌ ΠΏΡΠΎΡ ΠΎΠ΄Π΅ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΡΠΈΠΊΠ» ΠΎΠΏΡΡΡ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ. Π ΡΠ°ΠΊ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΡΠΈΠΊΠ». Π‘Π°ΠΌΠΎ ΡΠΎΠ±ΠΎΠΉ, ΠΊΠ°ΠΊ Π²Π½Π΅ΡΠ½ΠΈΠΉ, ΡΠ°ΠΊ ΠΈ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΠΈΠΊΠ»Ρ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠ΅ΡΠ²Π°Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ break.
ΠΡΠΈΠΌΠ΅Ρ 10-19. ΠΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΡΠΈΠΊΠ»
#!/bin/bash
# ΠΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΡΠΈΠΊΠ»Ρ "for".
outer=1 # Π‘ΡΠ΅ΡΡΠΈΠΊ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΡΠΈΠΊΠ»Π°.
# ΠΠ°ΡΠ°Π»ΠΎ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΡΠΈΠΊΠ»Π°.
for a in 1 2 3 4 5
do
echo "ΠΡΠ΅ΡΠ°ΡΠΈΡ #$outer Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΡΠΈΠΊΠ»Π°."
echo "---------------------"
inner=1 # Π‘Π±ΡΠΎΡ ΡΡΠ΅ΡΡΠΈΠΊΠ° Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π°.
# ΠΠ°ΡΠ°Π»ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π°.
for b in 1 2 3 4 5
do
echo "ΠΡΠ΅ΡΠ°ΡΠΈΡ #$inner Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π°."
let "inner+=1" # Π£Π²Π΅Π»ΠΈΡΠΈΡΡ ΡΡΠ΅ΡΡΠΈΠΊ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π°.
done
# ΠΠΎΠ½Π΅Ρ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π°.
let "outer+=1" # Π£Π²Π΅Π»ΠΈΡΠΈΡΡ ΡΡΠ΅ΡΡΠΈΠΊ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΡΠΈΠΊΠ»Π°.
echo # ΠΡΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ° Π΄Π»Ρ ΠΎΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΡΠΈΠΊΠ»Π°.
done
# ΠΠΎΠ½Π΅Ρ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΡΠΈΠΊΠ»Π°.
exit 0
ΠΠ΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΠΈΠΊΠ»ΠΎΠ² "while" Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ Π² ΠΡΠΈΠΌΠ΅Ρ 25-6, Π° Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΈΠΊΠ»Π° "while" Π² "until" -- Π² ΠΡΠΈΠΌΠ΅Ρ 25-8.
10.3. Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Ρ ΠΎΠ΄ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΈΠΊΠ»Π°
break, continue
ΠΠ»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ ΠΎΠ΄ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΈΠΊΠ»Π° ΡΠ»ΡΠΆΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ break ΠΈ continue[ 23 ] ΠΈ ΡΠΎΡΠ½ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΡΠ²ΠΎΠΈΠΌ Π°Π½Π°Π»ΠΎΠ³Π°ΠΌ Π² Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎΠΌΠ°Π½Π΄Π° break ΠΏΡΠ΅ΡΡΠ²Π°Π΅Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΈΠΊΠ»Π°, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ continue ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π² Π½Π°ΡΠ°Π»ΠΎ ΡΠΈΠΊΠ»ΠΎ, ΠΌΠΈΠ½ΡΡ Π²ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΡΠ΅Π»Π΅ ΡΠΈΠΊΠ»Π°.
ΠΡΠΈΠΌΠ΅Ρ 10-20. ΠΠΎΠΌΠ°Π½Π΄Ρ break ΠΈ continue Π² ΡΠΈΠΊΠ»Π΅
#!/bin/bash
LIMIT=19 # ΠΠ΅ΡΡ Π½ΠΈΠΉ ΠΏΡΠ΅Π΄Π΅Π»
echo
echo "ΠΠ΅ΡΠ°ΡΡ ΡΠΈΡΠ΅Π» ΠΎΡ 1 Π΄ΠΎ 20 (ΠΈΡΠΊΠ»ΡΡΠ°Ρ 3 ΠΈ 11)."
a=0
while [ $a -le "$LIMIT" ]
do
a=$(($a+1))
if [ "$a" -eq 3 ] || [ "$a" -eq 11 ] # ΠΡΠΊΠ»ΡΡΠΈΡΡ 3 ΠΈ 11
then
continue # ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π² Π½Π°ΡΠ°Π»ΠΎ ΡΠΈΠΊΠ»Π°.
fi
echo -n "$a "
done
# Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅:
# ΠΠΎΡΠ΅ΠΌΡ ΡΠΈΡΠ»ΠΎ 20 ΡΠΎΠΆΠ΅ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ?
echo; echo
echo ΠΠ΅ΡΠ°ΡΡ ΡΠΈΡΠ΅Π» ΠΎΡ 1 Π΄ΠΎ 20, Π½ΠΎ Π²Π·Π³Π»ΡΠ½ΠΈΡΠ΅, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΈΡΠ»Π° 2
##################################################################
# Π’ΠΎΡ ΠΆΠ΅ ΡΠΈΠΊΠ», ΡΠΎΠ»ΡΠΊΠΎ 'continue' Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΎ Π½Π° 'break'.
a=0
while [ "$a" -le "$LIMIT" ]
do
a=$(($a+1))
if [ "$a" -gt 2 ]
then
break # ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΡΠΈΠΊΠ»Π°.
fi
echo -n "$a "
done
echo; echo; echo
exit 0
ΠΠΎΠΌΠ°Π½Π΄Π΅ break ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ. ΠΠΎΠΌΠ°Π½Π΄Π° break Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΏΡΠ΅ΡΡΠ²Π°Π΅Ρ ΡΠΎΡ ΡΠΈΠΊΠ», Π² ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ½Π° Π²ΡΡΠ°Π²Π»Π΅Π½Π°, Π° break N ΠΏΡΠ΅ΡΡΠ²Π°Π΅Ρ ΡΠΈΠΊΠ», ΡΡΠΎΡΡΠΈΠΉ Π½Π° N ΡΡΠΎΠ²Π½Π΅ΠΉ Π²ΡΡΠ΅ (ΠΏΡΠΈΡΠ΅ΠΌ 1-ΠΉ ΡΡΠΎΠ²Π΅Π½Ρ -- ΡΡΠΎ ΡΡΠΎΠ²Π΅Π½Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠΈΠΊΠ»Π°, ΠΏΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².).
ΠΡΠΈΠΌΠ΅Ρ 10-21. ΠΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΡΠΈΠΊΠ»ΠΎΠ²
#!/bin/bash
# break-levels.sh: ΠΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΊΠ»ΠΎΠ².
# "break N" ΠΏΡΠ΅ΡΡΠ²Π°Π΅Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΈΠΊΠ»Π°, ΡΡΠΎΡΡΠ΅Π³ΠΎ Π½Π° N ΡΡΠΎΠ²Π½Π΅ΠΉ Π²ΡΡΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ.
for outerloop in 1 2 3 4 5
do
echo -n "ΠΡΡΠΏΠΏΠ° $outerloop: "
for innerloop in 1 2 3 4 5
do
echo -n "$innerloop "
if [ "$innerloop" -eq 3 ]
then
break # ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ "break 2",
# ΡΠΎΠ³Π΄Π° Π±ΡΠ΄ΡΡ ΠΏΡΠ΅ΡΡΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΉ, ΡΠ°ΠΊ ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΡΠΈΠΊΠ»Ρ