Фор Лооп је саставни део сваког програмског језика. Омогућава програмима да се понављају кроз одређени број ставки.
На пример, ако желите да прођете кроз листу или низ ставки ‘н’, користићете за петљу. Узмимо једноставан пример:
1Виолет2Индиго3Блуе4ГреенРаинбов Табле
Да бисмо извршили било коју радњу или поновили ставке у горњој табели, потребна нам је петља Фор.
Преглед садржаја
Басх за петљу
У басх скрипти, синтакса за петљу је следећа:
#!/bin/bash for VAR in 1 2 3 4 5.....N do ACTION 1 ACTION 2 ..... done
Басх Фор Лооп је прилично једноставан. Први ред #!/бин/басх означава да је код басх скрипта. ВАР је скраћеница за привремену променљиву која се користи за петљу. Н означава максималан број итерација. ‘до’ и ‘доне’ започињу и заустављају петљу, респективно. Акције су команде које се извршавају унутар петље.
Можемо да извршимо Басх Фор Лооп са различитим променљивим, као што су листа, стрингови, цели бројеви и низови. Овај чланак ће показати неколико уобичајених примера Басх Фор Лооп-а.
Можете директно да извршите ове програме на басх командној линији или да их сачувате у датотеци и извршите датотеку помоћу команде Басх филенаме.сх.
Читање статичне листе
Размотрите следећу листу – раинбовЦолорЛист = љубичаста, индиго, плава, зелена, жута, наранџаста, црвена
Горњу листу стрингова можемо одштампати користећи Басх Фор Лооп на следећи начин:
#! /bin/sh # Define the list rainbowColorList=Violet,Indigo,Blue,Green,Yellow,Orange,Red # Comma separator pattern using //,/ for colors in ${rainbowColorList//,/ } do echo $colors done
Излаз ће бити листа ставки у новом реду.
#Output Violet Indigo Blue Green Yellow Orange Red
Читање низа
Синтакса за декларисање низа је другачија. Користите заграде за сваки елемент (Стринг).
rainbowArray=("Violet" "Indigo" "Blue" "Green" "Yellow" "Orange" "Red") for colors in "${rainbowArray[@]}"; do echo "I like $colors" done
‘@’ се користи за понављање кроз сваки елемент у низу.
#Output I like Violet I like Indigo I like Blue I like Green I like Yellow I like Orange I like Red
Такође можемо користити Фор Лооп за штампање индекса и елемената низа.
#Printing with index rainbowArray=("Violet" "Indigo" "Blue" "Green" "Yellow" "Orange" "Red") for i in "${!rainbowArray[@]}"; do echo "Color at index " $i " : " "${rainbowArray[$i]}" i=$((i+1)); done
#Output Color at index 0 : Violet Color at index 1 : Indigo Color at index 2 : Blue Color at index 3 : Green Color at index 4 : Yellow Color at index 5 : Orange Color at index 6 : Red
Имајте на уму да користимо ‘!’ у петљи да бисте добили индекс елемента.
Итерациони опсег бројева
Можемо користити Басх Фор Лооп за понављање низа бројева.
#iterating over range of numbers echo "Countdown begins..." for N in {10..0} do echo "$N" done
„..“ означава опсег бројева.
#Output 10 9 8 7 6 5 4 3 2 1 0
Такође можемо прескочити бројеве бројања тако што ћемо навести опсег.
У примеру испод, прескачемо бројање за 3.
#iterating with skip counting echo "Countdown begins..." for N in {30..0..3} do echo "$N" done
Горњи програм почиње са 30 као првим бројем и одбројава до 0. Последњи параметар у фор петљи ‘3’ одређује број прескакања.
#Output 30 27 24 21 18 15 12 9 6 3 0
Стрингс анд Цхарацтерс
Можемо да урадимо много занимљивих стринг операција са Басх Фор Лооп-ом.
На пример, можемо да прочитамо сваки знак стринга користећи оператор ‘сек’ у Фор Лооп:
#read characters of a string myword="welcome" for i in $(seq 1 ${#myword}) do echo "${myword:i-1:1}" done
Имајте на уму да ‘сек’ треба да почне са 1 да би се први добио први знак.
#Output W e l c o m e
Такође можемо да штампамо низове одвојене размаком један по један:
#read each word from a sentence mysentence="Welcome to techblog.co.rs. One stop hub for all techies" for word in $mysentence; do echo $word done
#Output Welcome to techblog.co.rs. One stop hub for all techies
Изрази
Слично било ком другом програмском језику као што је Јава, можемо поставити изразе у Басх Фор Лооп.
for (( var=10; var>=0; var-- )) do echo "Counting down...$var" done
#Output Counting down...10 Counting down...9 Counting down...8 Counting down...7 Counting down...6 Counting down...5 Counting down...4 Counting down...3 Counting down...2 Counting down...1 Counting down...0
Читање аргумената командне линије
За читање из аргумената командне линије користимо команду ‘читај’. У примеру испод, добићемо неколико бројева од корисника и одштампати збир користећи Басх Фор Лооп. Користимо променљиву тотал да ускладиштимо средњи и коначни збир или збир бројева.
read -a array -p "Enter the numbers you want to add:" total=0 for i in ${array[@]}; do let total+=$i done echo "Sum of the numbers is: $total"
Излаз је:
#Output Enter the numbers you want to add: 3 4 66 Sum of the numbers is: 73
Проналажење парних и непарних бројева
Да бисмо пронашли непарне и парне бројеве између 1 и 10 (или било ког броја Н), требало би да користимо услов иф заједно са Басх фор Лооп. Да бисмо одредили паран број, поделићемо број са 2 и ако је остатак 0, онда га категоризујемо као паран или непаран.
#declare the list where the even and odd numbers will be sorted and kept evennum="" oddnum="" for (( i=1; i<=10; i++ )) do remainder=$(( $i % 2 )) if [ $remainder -eq 0 ]; then evennum="$evennum $i " else oddnum="$oddnum $i " fi done echo "Even numbers are: "$evennum echo "Odd numbers are: "$oddnum
Имајте на уму да дајемо опсег као 10 у горњем примеру. Можемо да променимо овај број да добијемо парне и непарне бројеве између било ког опсега. Такође можете покушати да прочитате број од корисника користећи команду ‘читај’ коју смо научили у претходном одељку.
#Output Even numbers are: 2 4 6 8 10 Odd numbers are: 1 3 5 7 9
Инфините Лооп
Бесконачна или бесконачна петља је петља која не престаје да се извршава, а програм мора бити приморан да престане користећи Цтрл+Ц. Лако можемо да креирамо бесконачну петљу користећи ‘; ;’ оператор унутар фор петље:
for (( ; ; )) do echo "Welcome to techblog.co.rs" done
#Output Welcome to techblog.co.rs Welcome to techblog.co.rs Welcome to techblog.co.rs Welcome to techblog.co.rs Welcome to techblog.co.rs Welcome to techblog.co.rs Welcome to techblog.co.rs Welcome to techblog.co.rs Welcome to techblog.co.rs Welcome to techblog.co.rs ^C $
Изјава о прекиду
Изјаве прекида се користе за прекид из петље када је услов ‘ако’ задовољен.
for color in Violet Indigo Blue Green Yellow Orange Red do if [[ "$color" == 'Green' ]]; then break fi echo "Searching for Green, the color now is $color" done echo "I found my color $color"
У овом примеру покушавамо да пронађемо зелену боју. Фор-петља пролази кроз сваку боју, а када се пронађе зелена боја, програм излази из петље због наредбе бреак.
#Output Searching for Green, the color now is Violet Searching for Green, the color now is Indigo Searching for Green, the color now is Blue I found my color Green
Цонтинуе Статемент
Настави се користи за прескакање тренутне петље и прелазак на следећу на основу одређеног услова. На пример, ако не желите да штампате боју ‘Зелена’ из нашег претходног програма, можемо да ставимо наставак, а све друге боје осим зелене ће бити приказане.
for color in Violet Indigo Blue Green Yellow Orange Red do if [[ "$color" == 'Green' ]]; then continue fi echo "$color" done
#Output Violet Indigo Blue Yellow Orange Red
Завршне речи
Покрили смо најчешће употребе Басх Фор Лооп-а, користећи низове, целе бројеве, низове и листу. Ако учите Линук, али имате Виндовс 10 машину, можете користити ВСЛ функцију и инсталирати Линук на своју Виндовс машину.
Затим можете користити Линук терминал на сличан начин као ЦМД.
Затим можете погледати Како покренути басх скрипте користећи Питхон?