10 Басх Фор Лооп примера са објашњењима

Фор Лооп је саставни део сваког програмског језика. Омогућава програмима да се понављају кроз одређени број ставки.

На пример, ако желите да прођете кроз листу или низ ставки ‘н’, користићете за петљу. Узмимо једноставан пример:

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 машину, можете користити ВСЛ функцију и инсталирати Линук на своју Виндовс машину.

  Снажан алат за снимање екрана и видео записа

Затим можете користити Линук терминал на сличан начин као ЦМД.

Затим можете погледати Како покренути басх скрипте користећи Питхон?