30 Bash loop examples

tři typy smyček se používají v bash pro různé účely. Ty jsou pro, Zatímco a do smyček. Různá použití těchto smyček jsou vysvětlena použitím 30 různých příkladů v tomto článku.

Používá Bash smyčky:

  1. Pomocí smyčky for pro čtení položek v seznamu
  2. Použití pro smyčce číst pole
  3. Použití pro smyčce číst seznam hodnot řetězec s mezerami
  4. Použití pro smyčce v {START..KONEC..Přírůstek} rozsah
  5. použití pro smyčku v {START..KONEC..PŘÍRŮSTEK} rozsah jít dozadu
  6. Použití pro smyčku s 3 díly a stavu čítače
  7. Použití pro smyčku s 3 díly a více podmínek a akcí s čárkou
  8. Pomocí Nekonečné smyčky for
  9. Pomocí smyčky s podmíněným pauzu a pokračovat
  10. Použití pro smyčce číst názvy souborů podle globbing
  11. Použití pro smyčce číst výstup z příkaz najít
  12. Pomocí smyčky for na čtení souborů z adresáře rekurzivně
  13. Použití pro smyčce číst názvy souborů, adresáře rekurzivně s podmínkou
  14. Běžící smyčce, dokud soubor existuje
  15. Pomocí smyčky for na základě výstupu z seznam balíčků příkazem
  16. Použití pro smyčce číst každý řádek souboru
  17. Použití pro smyčce číst každý řádek souboru založený na podmíněném zápas
  18. Pomocí while s protiproudem
  19. Pomocí while s vstup uživatele a ukončit při výběru exit z menu
  20. kombinace, zatímco smyčky s getopts
  21. Použití až do smyčky s protiproudem
  22. Ukončit, dokud smyčky založené na vstup uživatele
  23. Pomocí vnořené while
  24. Použití až do smyčky do režimu spánku/počkat na pozadí úkol začal ve skriptu
  25. Pomocí while se přečíst pid ze ps výstup, který není ukončen
  26. Vyhledávání libovolný řetězec v souboru pomocí smyčky a výstupu
  27. Kombinace bash s curl pro vyhodnocení dat z URL
  28. Čtení dat z portu poslat netcat pomocí while
  29. ping URL pomocí smyčky
  30. Běžící shora v dávkovém režimu pomocí smyčky a záznam výstupu

Použití pro smyčce číst položky v seznamu

nejvíce jednoduché použití “ pro “ smyčky je číst seznam řetězec nebo číselná data. Seznam číselných dat je iterován pomocí smyčky for-in v následujícím příkladu. Zde se v proměnné přečtou čtyři čísla, $n v každém kroku smyčky a vytisknou se. Vytvořte soubor bash s následujícím skriptem a spusťte jej z terminálu.

#!/bin/bash
#-ve smyčce číst seznam čísel
for n in 10 11 17 25

# Tisk každé číslo
echo „číslo $n“
hotovo

Výstup:

Spustit skript.

$ bash for1.sh

po spuštění skriptu se zobrazí následující výstup.

nahoru

Použití pro smyčce číst pole

Libovolné pole proměnná obsahuje seznam údajů, které může být opakována velmi snadno pomocí pro-v smyčky. Následující příklad ukazuje použití smyčky for-in pro čtení pole dat řetězce. Zde každá hodnota pole načte v proměnné $language a vytiskne zprávu na základě jazyka v každé iteraci.

#!/bin/bash
jazyky=(„Bash, PERL, Python, PHP“)
pro jazyk v $jazyků

pokud

echo „$jazyk je webový programovací jazyk“
ostatní
echo „$language je skriptovací jazyk“
fi
hotovo

Výstup:

Spustit skript.

$ bash for2.sh

po spuštění skriptu se zobrazí následující výstup.

nahoru

Použití pro smyčce číst seznam hodnot řetězec s mezerami

Když seznam řetězec je číst pro-v smyčky a řetězcovou hodnotu obsahuje prostor pak hodnoty rozdělit do slov na základě prostoru, pokud je hodnota řetězce ne citoval s jedním nebo dvojité uvozovky. Následující příklad ukazuje, jak lze seznam hodnot řetězců s mezerou číst smyčkou for-in. Zde jedna hodnota seznamu obsahuje mezeru a je vytištěna s mezerou ve výstupu.

#!/bin/bash
#-ve smyčce číst seznam řetězců s prostorem
pro os v „Ubuntu“ „Linux Mint“ „Fedora“ „CentOS“

#Vytiskne každý řetězec
echo „Operační Systém – $os“
hotovo

Výstup:

Spustit skript.

$ bash for3.sh

zde je správně vytištěna hodnota řetězce „Linux Mint“.

přejděte na začátek

pomocí pro smyčku v {START..KONEC..INCREMENT} rozsah

dalším použitím smyčky for-in je čtení pole rozsahu. V následujícím příkladu se smyčka for používá ke čtení rozsahu dat od 10 do 30, která se v každém kroku zvyšuje o 5. Dále skript vytiskne ta čísla v rozsahu, která jsou dělitelná 10.

#!/bin / bash
# číst rozsah pomocí pro smyčku
pro num v {10..30..5}

# Zkontrolujte, zda číslo je dělitelné 10 nebo ne
, pokud (( $num%10==0 ))
pak
echo „$num je číslo dělitelné 10“
fi
hotovo

Výstup:

Spustit skript.

$ bash for4.sh

po spuštění skriptu se zobrazí následující výstup.

přejděte na začátek

pomocí pro smyčku v {START..KONEC..PŘÍRŮSTEK} rozsahu bude zpětná

rozsah dat může být přečíst zpět pomocí pro-ve smyčce, kde výchozí hodnota rozsah je větší než koncovou hodnotu rozsahu. V následujícím příkladu bude rozsah začínat od 50 do 30. Hodnota $num se sníží o 10 v každém kroku smyčky. Skript vytiskne ta čísla z rozsahu, která jsou dělitelná 5 a 10.

#!/bin / bash
echo „následující čísla jsou dělitelná 5 a 10“
# číst rozsah pomocí smyčky
pro num v {50..30..10}

# Zkontrolujte, zda číslo je dělitelné 5 a 10, nebo ne
, pokud (( $num%5==0 && $num%10==0 ))
pak
echo -n „$num „
fi
hotovo
echo „Hotovo“

Výstup:

Spustit skript.

$ bash for5.sh

po spuštění skriptu se zobrazí následující výstup.

nahoru

Použití pro smyčku s 3 díly a stavu čítače

Bash podporuje pro smyčky s třemi díly jako další standardní programovací jazyky. První část obsahuje inicializaci, druhá část obsahuje podmínku ukončení a třetí část obsahuje operaci přírůstku nebo poklesu. Tato smyčka se používá hlavně tehdy, když je počet iterací dříve definován. V následujícím příkladu bude smyčka iterovat 50krát a vypočítat součet 1 až 50. Výsledek součtu se vytiskne jako výstup.

#!/bin/bash
# Inicializace proměnné
sum=0
# Smyčka bude opakovat pro 50 krát
(( n=1; n<=50; n++ ))

# Přidat částku hodnoty s další hodnoty n
((sum=$sum+$n))
hotovo
# Vytisknout výsledek
echo „součet 1 až 50 je $sum“

Výstup:

Spustit skript.

$ bash for6.sh

na výstupu je zobrazen součet 1 až 50.

nahoru

Použití pro smyčku s 3 díly a více podmínek a akcí s čárkou

Pro smyčky s třemi díly mohou být definované s více inicializace, ukončení podmínky a akce. Následující příklad ukazuje použití tohoto typu smyčky. Zde jsou proměnné $x a $ y inicializovány 5 a 25. Smyčka bude pokračovat, dokud hodnota $x není menší nebo rovna 20 a hodnota $y je větší než 5. Hodnota $x se zvýší o 5 a hodnota $y se sníží o 5 v každé iteraci smyčky. Aktuální hodnota $x a $ y v každém kroku se vytiskne jako výstup.

#!/bin/bash
# Loop se bude opakovat na základě dvou podmínek
for (( x=5,y=25; x<=20 && y>5; x+=5,y=5 ))

echo „aktuální hodnota x=$x a y=$y“
hotovo

Výstup:

Spustit skript.

$ bash for7.sh

po spuštění skriptu se zobrazí následující výstup.

nahoru

Pomocí Nekonečné smyčky for

Když každá smyčka je definována bez ukončení stavu, pak se smyčka pracuje jako nekonečná smyčka. Následující příklad ukazuje použití nekonečné smyčky, která neobsahuje žádné části inicializace, ukončení a akce. Tento typ smyčky for Je definován dvojitým středníkem (; ;). Následující skript bude pokračovat ve smyčce, dokud uživatel nezadá „quit“ jako vstup. Skript vytiskne libovolné číslo od 1 do 20, které bude mít jako vstup, jinak vytiskne „číslo je mimo rozsah“

#!/bin / bash
# deklarovat nekonečnou smyčku
pro (( ; ; ))

# Si vstup
echo „Zadejte číslo mezi 1 až 20“
přečtěte si n
# Nastavit stav ukončení smyčky
pokud

echo „Program ukončen“
exit 0
fi
# Zkontrolujte číslo v rozsahu
, pokud (( $n < 1 || $n > 20 ))

echo „číslo je mimo rozsah“
ostatní
echo „číslo $n“
fi
hotovo

Výstup:

Spustit skript.

$ bash for8.sh

zde se 6 bere jako první vstup, který je platným číslem, 22 se bere jako druhý vstup, který je neplatným číslem, a quit se bere jako třetí vstup, který ukončil skript.

nahoru

Pomocí smyčky s podmíněným pauzu a pokračovat

„pokračovat“ prohlášení je použito k vynechání některé části(s) smyčky založené na jakémkoli stavu a „rozbít“ prohlášení je použit k ukončení smyčky založené na jakémkoli stavu. Následující příklad ukazuje použití těchto příkazů ve smyčce for. Zde se smyčka používá ke čtení seznamu dat řetězců a každá hodnota v seznamu je uložena v proměnné $food. Když je hodnota $ food „polévka“, bude pokračovat ve smyčce bez tisku hodnoty. Když je hodnota $ food „těstoviny“, ukončí smyčku. Když $food obsahuje jinou hodnotu než „polévka“ a „těstoviny“, vytiskne hodnotu. Skript tedy vytiskne dvě hodnoty ze seznamu jako výstup.

#!/bin/bash
# Prohlašuji, že smyčka s seznam
za jídlo v Pizza Polévka, Burger, Těstoviny, Nudle

# Nastavit podmínku pro to, pokračovat
pokud

pokračovat
# Nastavit podmínku pro přerušení
elif

přestávka
ostatní
echo „$jídlo je mé oblíbené“
fi
hotovo

Výstup:

Spustit skript.

$ bash for9.sh

zde jsou ze seznamu vynechány dvě hodnoty. „Polévka“ není vytištěna pro prohlášení o pokračování a „těstoviny“ nejsou vytištěny pro prohlášení o přestávce.

nahoru

Použití pro smyčce číst názvy souborů podle globbing

názvy Souborů nebo konkrétní obsah souboru lze vyhledávat pomocí globbing. Používá různé typy zástupných znaků pro odpovídající libovolný název souboru nebo vyhledávání obsahu v souboru. Všechny soubory s příponou txt aktuálního umístění jsou vyhledávány vytištěny v následujícím příkladu. Při spuštění skriptu budou všechny odpovídající názvy souborů vytištěny bez newline jako výstup.

#!/bin / bash
# Loop prohledá všechny textové soubory a uloží každý název souboru do $file
pro soubor v „*.txt“;

# Tisk názvem
echo $soubor;
hotovo

Výstup:

Spustit skript.

$ bash for110.sh

nahoru

Použití pro smyčce číst výstup z příkaz najít

‚najít‘ příkaz se používá pro různé účely v bash. V následujícím příkladu se příkaz „Najít“ používá ke čtení všech textových názvů souborů z aktuálního umístění. Zde,‘ – name ‚ možnost použít pro vyhledávání velká a velká písmena. Skript tedy vytiskne názvy souborů aktuálního umístění, které mají ‚.txt ‚ rozšíření s libovolným názvem. Zde se proměnná IFS používá k definování nového řádku jako oddělovače polí a tisku hodnoty $file v každém řádku.

#!/bin/bash
# Nastaví oddělovač polí
IFS=$’\n‘;
# Přečtěte si soubory z adresáře
pro soubor in $(find -name „*.txt“);
echo $soubor
hotovo
#Uunset pole oddělovač
unset IFS;

Výstup:

Spustit skript.

$ bash pro 11.sh

po spuštění skriptu se zobrazí následující výstup.

nahoru

Použití pro smyčce číst názvy souborů, adresáře rekurzivně

‚najít‘ příkaz lze použít k číst všechny soubory a sub-složky konkrétního adresáře. Následující příklad ukazuje použití příkazu „Najít“ ke čtení všech názvů souborů a adresářů v adresáři „mydir“. Zde se IFS proměnná používá k tisku hodnoty $ filename s ‚newline‘ jako v předchozím příkladu.

#!/ bin / bash
# nastavit oddělovač polí
IFS=$ ‚\n‘;
# Přečtěte si soubory z adresáře
s názvem in $(find „adresář“)

echo „$filename“
hotovo
# Unset pole oddělovač
unset IFS;

Výstup:

Spustit skript.

$ bash for12.sh

po spuštění skriptu se zobrazí následující výstup.

nahoru

Použití pro smyčce číst názvy souborů, adresáře rekurzivně s podmínkou

“ pro “ smyčky s ‚najít‘ příkaz může být použit k tisku som+

e konkrétní názvy souborů z adresáře na základě nějaké podmínky. příkaz ‚find‘ se používá s podmínkou v následujícím příkladu. Bude vyhledávat pouze textové názvy souborů adresáře mydir. Zde se používá volba‘ – iname ‚s příkazem‘ find ‚ pro vyhledávání případů. To znamená, že všechny soubory s příponou “ txt „nebo“ TXT “ budou porovnány a vytištěny jako výstup. Zde se IFS proměnná používá k tisku hodnoty $ filename s ‚newline‘ jako v předchozím příkladu.

#!/bin/bash
# Nastaví oddělovač polí
IFS=$’\n‘;
# Přečtěte si všechny textové soubory z adresáře
s názvem in $(find adresář -iname ‚*.txt‘);
echo „$filename“
hotovo
# Unset pole oddělovač
unset IFS;

Výstup:

Spusťte následující příkaz pro zobrazení seznamu souborů a složek z adresáře mydir.

$ ls mydir

spusťte skript.

$ bash pro 13.sh

v adresáři jsou tři textové soubory, které jsou zobrazeny na výstupu.

nahoru

Běžící smyčce, dokud soubor existuje

Nějaké názvem existuje, nebo ne je kontrolována v následujícím příkladu pomocí nekonečné smyčky for. V tomto skriptu, název souboru bude mít jako vstup v každé iteraci smyčky a testovat název souboru je existuje v aktuálním umístění, nebo ne. Pokud název souboru existuje, skript vytiskne „soubor existuje“ a bude pokračovat ve smyčce, jinak smyčku ukončí vytištěním zprávy „Soubor neexistuje“.

#!/bin/bash
# Define nekonečné smyčky
for(( ; ; ))

# Vstup souboru
echo „Zadejte název souboru“
přečíst soubor
# Zkontrolujte, zda soubor existuje nebo ne
pokud

echo „Názvem neexistuje“
exit 0
ostatní
echo „Soubor existuje“
fi
hotovo

Výstup:

Spustit skript.

$ bash loop14.sh

existující názvem je uveden jako první vstup a non-existující názvem je uveden jako druhý výstup, který ukončí skript.

nahoru

Pomocí smyčky for na základě výstupu z seznam balíčků příkazem

informace o nainstalovaných balíčků v systému lze získat pomocí příkazu `apt seznam – instalované`. smyčka ‚for‘ se používá v následujícím příkladu ke čtení informací o nainstalovaném balíčku z příkazu seznam balíčků a tisku informací o každém balíčku v každém řádku. IFS proměnná se zde používá k tisku hodnoty $line s ‚newline‘ jako v předchozím příkladu.

# nastavit oddělovač polí
IFS=$’\n‘;
# Přečtěte si soubor řádek po řádku
pro řádek v $(apt list –nainstalován)

echo „$line“
hotovo
# Unset pole oddělovač
unset IFS;

Výstup:

Spustit skript.

$ bash for15.sh

výstup zobrazuje seznam nainstalovaných balíčků.

přejděte na začátek

pomocí smyčky pro čtení řádků souboru

existuje mnoho způsobů, jak číst soubor v bash. příkaz ‚cat‘ se používá v následujícím příkladu ke čtení souboru, temp.txt. Každý řádek souboru se uloží do proměnné $line a vytiskne řádek v každé iteraci smyčky for. IFS proměnná se zde používá k tisku hodnoty $line s ‚newline‘ jako v předchozím příkladu.

#!/bin / bash
# nastavit oddělovač polí
IFS=$ ‚\n‘;
# číst soubor řádek po řádku
pro řádek v $(cat temp.txt)

echo „$line“
hotovo
# Unset pole oddělovač
unset IFS;

Výstup:

Spustit skript.

$ bash pro 16.sh

nahoru

Použití pro smyčce číst řádky ze souboru s podmíněným zápas

Pokud chcete vytisknout konkrétní řádky ze souboru pouze pak budete muset přidat uvnitř smyčky, která se používá ke čtení souboru. Následující příklad vytiskne formátovaný výstup každého řádku ‚ den v týdnu.txt ‚ soubor založený na podmínce. Pokud některý řádek souboru obsahuje hodnotu „neděle“, vytiskne zprávu „dovolená“, jinak vytiskne zprávu „pracovní den“.

# Přečtěte si soubor
pro řádek v $(cat všední den.txt)

#Porovnat hodnoty s řetězec data
pokud

echo „$line je svátek“
ostatní
echo „$line je pracovní den“
fi
hotovo

Výstup:

Spustit skript.

$ bash for17.sh

po spuštění skriptu se zobrazí následující výstup.

přejít na začátek

pomocí zatímco smyčka s čítačem

proměnná$counter se používá k řízení iterace smyčky. Následující příklad ukazuje použití while smyčky s počítadlem. Zde je $counter inicializován na 1 a zatímco smyčka bude iterovat 5krát a vytiskne hodnotu $ counter v každé iteraci . $counter se v každém kroku zvýší o 1, aby se dosáhlo stavu ukončení smyčky.

#!/bin/bash
# Inicializovat čítač
counter=1
# Iteraci smyčky 5 krát
, zatímco

echo „hodnota Čítače = $counter“
((counter++))
hotovo

Výstup:

Spustit skript.

$ bash loop18.sh

nahoru

Pomocí while s vstup uživatele a ukončit při výběru, ukončení menu

‚při‘ smyčka se používá v následujícím příkladu se zobrazí nabídka 5 možností. První čtyři možnosti se používají k provedení čtyř aritmetických operací založených na vstupu uživatele a poslední možnost se používá k ukončení skriptu. Nabídka se zobrazí po zadání dvou čísel jako vstupu. Pokud uživatel vybere „1“, budou přidána vstupní čísla. Pokud uživatel vybere „2“, bude druhé vstupní číslo odečteno od prvního vstupního čísla. Pokud uživatel vybere „3“, pak se vstupní čísla vynásobí a pokud uživatel vybere „4“, první vstupní číslo bude děleno druhým vstupním číslem.

#!/bin/bash
# Vezměte dvě čísla
echo „Zadejte číslo“
číst n1
echo „Zadejte číslo“
číst n2
# Prohlašuji, nekonečné smyčky
je sice pravda

# Zobrazení menu
echo „1. Přídavek „
echo “ 2. Odčítání „
echo “ 3. Násobení „
echo “ 4. Divize „
echo “ 5. Exit „
echo-n “ Vyberte libovolné číslo z :“
read input
# Provádět operace na základě vybrané hodnoty
li ]

((výsledek=n1+n2))
elif ]

((výsledek=n1-n2))
elif ]

((result=$n1*$n2))
elif ]

((result=$n1/$n2))
elif ]

exit 0
ostatní
echo „Neplatný vstup“
fi
echo „výsledek je $result“
hotovo

Výstup:

Spustit skript.

$ bash loop19.sh

po výběru volby 2 a 5 se zobrazí následující výstup.

nahoru

Kombinace, zatímco smyčky s getopts

‚getopts‘ je vestavěný funkce bash, který se používá k číst argumenty a možnosti v bash skript. Následující příklad ukazuje použití funkce getopts, která se používá ve smyčce while. Zde se u getopts používají tři hodnoty voleb. Jedná se o „a“, “ r “ A „c“. Pro tyto možnosti budou vytištěny tři různé zprávy.

#!/ bin / bash
# Přečtěte si volbu a uložte ji do proměnné
, zatímco getopts“ arc “ volba;
# Zkontrolujte, zda volba hodnotu
${option} v
) #možnost
echo „Proces přerušen“
;;
r ) #možnost r
echo „Proces restartování“
;;
c ) #možnost c
echo „Proces pokračuje“
;;
\? ) #neplatná možnost
echo „Použití: nebo nebo „
;;
esac
hotovo

Výstup:

Spustit skript s platné možnosti.

$ bash loop20.sh -arc

spusťte skript s neplatnou volbou.

$ bash loop20.sh-h

nahoru

Použití až do smyčky s protiproudem

, Dokud se smyčka může být použit s protiproudem, jako při smyčky, která je uvedena dříve. Následující příklad ukazuje použití do smyčky s počítadlem. Zde se proměnná $counter používá k řízení iterace smyčky, která je inicializována na 1. Smyčka dokud bude pokračovat, dokud hodnota $ counter na 5 . Smyčka se tedy bude iterovat 6krát a v každém kroku vytiskne hodnotu $counter. $counter bude snížen o 1 v každém kroku, aby se dosáhlo podmínky ukončení smyčky.

#!/bin/bash
# Initializ pult
counter=10
# Iteraci smyčky pro 6 krát

echo „aktuální hodnota čítače = $counter“
((counter–))
hotovo

Výstup:

Spustit skript.

$ bash loop21.sh

nahoru

Ukončit, dokud smyčky založené na vstup uživatele

Žádné smyčky zaniká na základě určité podmínky. Jak může být smyčka ukončena na základě vstupu uživatele, je uvedeno v následujícím příkladu. Podle podmínky ukončení se smyčka ukončí, když je hodnota $number větší než 50. Hodnota $number není zvýšena uvnitř smyčky. Proto., smyčka bude i nadále přijímat vstup od uživatele, dokud se jako vstup nepřijme číslo více než 50.

#!/bin/bash
# Inicializovat číslo
číslo=0
# Nastavit vzor pro číselná data
vzor=’^+$‘
# Nastavit stav ukončení

echo -n „Zadejte číslo : „
přečtěte si číslo,
# Zkontrolujte, zda vstupní hodnota je číslo, nebo ne
pokud ! ]
pak
echo “ error: Není číslo“
číslo=0
ostatní
echo „zadali Jste $číslo“
fi
hotovo

Výstup:

Spustit skript.

$ bash loop22.sh

scénář bude opakovat smyčku opět pro vstupní hodnotu 4, zobrazí chybová zpráva pro vstupní hodnotu, gg a ukončit smyčky pro vstupní hodnotu 54.

přejděte na začátek

pomocí vnořených smyček

když je smyčka deklarována uvnitř jiné smyčky, nazývá se nekonečná smyčka. Následující příklad ukazuje použití vnořené smyčky while. Zde se první smyčka while iteruje 2krát a druhá smyčka while uvnitř první smyčky bude iterovat třikrát. Celková iterace smyček je 2×3=6krát. proměnné $i a $ j se používají k řízení iterace těchto smyček a hodnoty těchto proměnných v každém kroku se vytisknou jako výstup.

#!/bin/bash
# Inicializovat i a j
=1
j=1
# Nastavení ukončení podmínka pro i
, zatímco

# Nastavení ukončení podmínkou pro j
, zatímco

# Vypíše aktuální hodnoty i a j
printf „i=%d j=%d\n“, $i $j
((j++))
hotovo
j=1
((i++))
hotovo

Výstup:

Spustit skript.

$ bash loop23.sh

nahoru

Použití až do smyčky do režimu spánku/počkat na pozadí úkol začal ve skriptu

Jakýkoliv proces, který lze spustit na pozadí pomocí&‘ symbol. V tomto příkladu je ukázáno, jak lze proces spustit na pozadí pomocí do smyčky a ukončit smyčku na základě času zadaného v příkazu sleep. Zde se k ukončení smyčky používá proměnná $cnt. Smyčka spustí proces na pozadí a zapíše výstup do textového souboru s názvem „výstup.txt “ po dobu 1 sekundy. Poté se zkontroluje stav ukončení smyčky a vrátí se false. Dále skript vytiskne zprávu „spící …“ a po 3 sekundách opustí skript.

#!/bin/bash
# Inicializovat čítač
cnt=1
# Nastavení ukončení stavu

echo „proces na Pozadí běží“;
# Vyčkejte 1 sekundu,
sleep 1;
((cnt++))
hotovo > výstup.txt &
# počkejte 3 sekundy
echo “ spící…“
spánek 3

výstup:

spusťte skript.

$ bash loop24.sh

zkontrolujte výstup skriptu.

$ kočičí výstup.txt

nahoru

Pomocí while se přečíst pid ze ps výstup, který není ukončen

“ ps “ příkaz slouží k získání informací o všech běžících procesů v systému. Poskytuje podrobné informace o každém běžícím procesu, jako je id uživatele, PID, využití procesoru, využití paměti atd. Následující příklad ukazuje, jak lze použít smyčku while ke čtení informací o běžícím procesu souvisejících s „apache“. Zde se proměnná IFS používá k tisku PID každého procesu pomocí nového řádku. Dále bude čekat, až uživatel stiskne libovolnou klávesu pro ukončení skriptu.

#!/bin/bash
# Nastaví oddělovač polí
IFS=‘ ‚
, zatímco

# Načíst všechny běžící proces id apache
pid=`ps -ef | grep „apache“ | awk ‚{print $2 “ proces je spuštěn …“}“
echo $pid
# Vyčkejte 1 sekundu,
spánek 1
# Stiskněte libovolnou klávesu pro ukončení smyčky
echo „Stisknutím libovolné klávesy ukončit“
pokud četl -r -N 1 ; pak
přestávka
fi
hotovo
# Unset pole oddělovač
unset IFS

Výstup:

Spustit skript.

$ bash loop25.sh

PID všech běžících procesů založených na ‚apache‘ je zobrazen na výstupu.

přejděte na začátek

hledání libovolného řetězce v souboru pomocí smyčky a ukončete

Vytvořte soubor s názvem Měsíc.txt s následujícím obsahem pro testování skriptu bash uvedeného níže.

měsíc.txt

January
February
March
April
May
June
July
August
September
October
November
December

‚zatímco smyčka je použit v následujícím příkladu číst měsíc.txt soubor řádek po řádku. Pokud některý řádek obsahuje hodnotu „červen“, vytiskne „užijte si letní dovolenou“ a ukončí ze skriptu, jinak vytiskne hodnotu $line.

#!/bin / bash
# Nastavte název souboru na čtení
filename=“month.txt“
# Přečtěte si soubor řádek po řádku
while IFS= read -r-line

# Zkontrolujte hodnotu linka je rovná. června
# Ukončit program, je-li podmínka true
li ];

echo „Užijte si Letní dovolenou“
exit 0
ostatní
echo $line
fi
hotovo < $filename

Výstup:

Spustit skript.

$ bash loop26.sh

zde v měsíci souboru existuje „červen“.txt, který ukončí smyčku. Takže další názvy měsíců po „červnu“ nebudou číst smyčkou.

nahoru

Kombinovat bash s curl pro vyhodnocení dat z URL

Data mohou být převedeny do nebo z libovolného síťového serveru v bashi pomocí ‚curl‘ příkaz s jakýkoliv podporovaný protokol jako HTTP, FTP, TELNET, atd. Jedná se o nástroj příkazového řádku. Jak lze příkaz „curl“ použít k vyhodnocení dat z adresy URL pomocí smyčky, je ukázáno v následujícím příkladu. Zde pro smyčku přečte seznam adres url a předá každou hodnotu adresy URL do zvlnění a vytiskne data přijatá z adresy URL.

#!/bin/bash
# Přečtěte si každou adresu URL ze seznamu
pro adresu url v „yahoo.com“ „youtube.com“

# Vypíše HTTP kód odpovědi pro každou URL
echo $url; curl-v-m 5 -s $1 „$url“ | grep HTTP/1.1;
hotovo

Výstup:

Spustit skript.

$ bash loop27.sh

nahoru

Čtení dat z portu poslat netcat pomocí while

‚netcat‘ příkaz se používá pro čtení a zápis dat přes síť pomocí tcp nebo udp protokolu. příkaz ‚ nc ‚se používá v bash ke spuštění příkazu‘ netcat‘. Následující příklad ukazuje použití příkazu‘ nc ‚ ve smyčce while. Zde se skript pokusí připojit k portu 1234 pomocí příkazu nc a pokud se může připojit, vytiskne zprávu na druhém terminálu. Chcete-li spustit příkaz „nc localhost 1234“, musíte otevřít další okno terminálu nebo kartu. Po navázání spojení může být jakákoli zpráva přenesena z jednoho terminálu na jiný terminál.

#!/bin / bash
echo „poslech na portu 1234 …“
# Přečtěte si zprávu schválil netcat na port 1234
při čtení textu

# Ukončit smyčky, pokud přijatá zpráva je „ukončit“
pokud, pak
echo „Ahoj“
přestávka
ostatní
echo „$text“
fi
# Vytisknout zprávu, když port je připojen
hotovo < <((printf „Vítejte.\r \ nType nějakou zprávu: „| / nc-l 1234)

výstup:

spusťte skript v terminálu a spusťte poslech na portu 1234.

$ bash loop28.sh

dále, otevřete terminál a spusťte následující příkaz komunikovat s

první terminálu.

$ nc localhost 1234

ve druhém terminálu se zobrazí uvítací zpráva. Pokud uživatel zadá něco ve druhém terminálu, zobrazí se v prvním terminálu. Když uživatel zadá „quit“ ve druhém terminálu, skript se ukončí zobrazením zprávy “ Bye “ v prvním terminálu.

nahoru

ping URL pomocí smyčky

můžete zjistit jakékoliv webové stránky je žít, nebo ne provedením „ping“ příkazu s URL webu. příkaz „ping“ se používá s „google.com‘ v následujícím příkladu zkontrolovat připojení k Internetu funguje, nebo ne. Zatímco smyčka bude iterovat 5 krát ve skriptu a pokusit se ping google.com. Pokud server odpoví, vytiskne „Internet funguje“ a ukončí smyčku. Pokud smyčka iteruje 5krát a nedostane žádnou odpověď serveru, vytiskne „žádné připojení k internetu“.

#!/bin/bash
# Nastavení counter
count=5
zatímco ]

# Zkuste ping google.com
ping -c 1 google.com
c=$?
# Zkontrolujte stav kód
li ]

echo „Internet funguje“
exit 0
fi
# Decrement counter
((count–))
hotovo
echo „připojení k Internetu“

Výstup:

spusťte skript.

$ bash loop29.sh

získáte podobný výstup, pokud vaše připojení k Internetu funguje správně.

nahoru

Běžící shora v dávkovém režimu pomocí smyčky a záznam výstupu

“ top “ příkazu je Linux administrativní nástroj, který se používá k zkoumat využití systémových zdrojů spravovat různé úkoly a sledovat spuštěné procesy. Jak můžete spustit příkaz “ top “ v dávkovém režimu pomocí smyčky a ukládat záznamy do textového souboru, je uvedeno v následujícím příkladu. Zde se volba-b používá ke spuštění příkazu “ top “ v dávkovém režimu a volba-p se používá k nastavení ID procesu, které chcete sledovat. Výstup příkazu “ top “ bude uložen ve výstupu.txt soubor.

#!/bin/bash
# Smyčka bude opakovat 5 krát a spustit horní příkazu
pro ((i=0; i<5; i++))

horní -b -p 2875 -n1 | tail -1 >> výstup.txt
hotovo

výstup:

nejprve spusťte následující příkaz a vyhledejte seznam spuštěných procesů.

$ ps

Nyní spusťte skript.

$ bash loop30.sh

Spusťte následující příkaz pro zobrazení výstupu skriptu.

$ kočičí výstup.txt

přejít na začátek

závěr

smyčky lze použít v bash různými způsoby k provádění různých typů jednoduchých nebo složitých úkolů. Jak lze v bash použít tři typy smyček pro různé úkoly, jako je načítání seznamu nebo pole, čtení souborů nebo jakýkoli příkazový výstup atd. jsou uvedeny v tomto článku pomocí velmi jednoduchých příkladů. Doufám, že tyto příklady pomohou čtenáři lépe porozumět použití smyčky bash.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.

More: