Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ программирования Π½Π° языкС сцСнариСв ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 26

Автор МСндСль ΠšΡƒΠΏΠ΅Ρ€

Как ΠΈ Π² случаС с Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ 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",

# Ρ‚ΠΎΠ³Π΄Π° Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ, Ρ‚Π°ΠΊ ΠΈ внСшний Ρ†ΠΈΠΊΠ»Ρ‹