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:
- Pomocí smyčky for pro čtení položek v seznamu
- Použití pro smyčce číst pole
- Použití pro smyčce číst seznam hodnot řetězec s mezerami
- Použití pro smyčce v {START..KONEC..Přírůstek} rozsah
- použití pro smyčku v {START..KONEC..PŘÍRŮSTEK} rozsah jít dozadu
- Použití pro smyčku s 3 díly a stavu čítače
- Použití pro smyčku s 3 díly a více podmínek a akcí s čárkou
- Pomocí Nekonečné smyčky for
- Pomocí smyčky s podmíněným pauzu a pokračovat
- Použití pro smyčce číst názvy souborů podle globbing
- Použití pro smyčce číst výstup z příkaz najít
- Pomocí smyčky for na čtení souborů z adresáře rekurzivně
- Použití pro smyčce číst názvy souborů, adresáře rekurzivně s podmínkou
- Běžící smyčce, dokud soubor existuje
- Pomocí smyčky for na základě výstupu z seznam balíčků příkazem
- Použití pro smyčce číst každý řádek souboru
- Použití pro smyčce číst každý řádek souboru založený na podmíněném zápas
- Pomocí while s protiproudem
- Pomocí while s vstup uživatele a ukončit při výběru exit z menu
- kombinace, zatímco smyčky s getopts
- Použití až do smyčky s protiproudem
- Ukončit, dokud smyčky založené na vstup uživatele
- Pomocí vnořené while
- Použití až do smyčky do režimu spánku/počkat na pozadí úkol začal ve skriptu
- Pomocí while se přečíst pid ze ps výstup, který není ukončen
- Vyhledávání libovolný řetězec v souboru pomocí smyčky a výstupu
- Kombinace bash s curl pro vyhodnocení dat z URL
- Čtení dat z portu poslat netcat pomocí while
- ping URL pomocí smyčky
- 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
- Použití pro smyčce číst pole
- Použití pro smyčce číst seznam hodnot řetězec s mezerami
- pomocí pro smyčku v {START..KONEC..INCREMENT} rozsah
- pomocí pro smyčku v {START..KONEC..PŘÍRŮSTEK} rozsahu bude zpětná
- Použití pro smyčku s 3 díly a stavu čítače
- Použití pro smyčku s 3 díly a více podmínek a akcí s čárkou
- Pomocí Nekonečné smyčky for
- Pomocí smyčky s podmíněným pauzu a pokračovat
- Použití pro smyčce číst názvy souborů podle globbing
- Použití pro smyčce číst výstup z příkaz najít
- Použití pro smyčce číst názvy souborů, adresáře rekurzivně
- Použití pro smyčce číst názvy souborů, adresáře rekurzivně s podmínkou
- Běžící smyčce, dokud soubor existuje
- Pomocí smyčky for na základě výstupu z seznam balíčků příkazem
- pomocí smyčky pro čtení řádků souboru
- Použití pro smyčce číst řádky ze souboru s podmíněným zápas
- pomocí zatímco smyčka s čítačem
- Pomocí while s vstup uživatele a ukončit při výběru, ukončení menu
- Kombinace, zatímco smyčky s getopts
- Použití až do smyčky s protiproudem
- Ukončit, dokud smyčky založené na vstup uživatele
- pomocí vnořených smyček
- Použití až do smyčky do režimu spánku/počkat na pozadí úkol začal ve skriptu
- Pomocí while se přečíst pid ze ps výstup, který není ukončen
- hledání libovolného řetězce v souboru pomocí smyčky a ukončete
- Kombinovat bash s curl pro vyhodnocení dat z URL
- Čtení dat z portu poslat netcat pomocí while
- ping URL pomocí smyčky
- Běžící shora v dávkovém režimu pomocí smyčky a záznam výstupu
- závěr
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.
#-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.
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.
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.
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.
#-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.
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.
# čí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.
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.
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.
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.
# 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.
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.
# 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.
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“
# 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.
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.
# 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.
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.
# 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.
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.
# 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.
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.
# 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.
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.
# 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.
spusťte skript.
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“.
# 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.
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.
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.
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.
# 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.
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“.
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.
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.
# Inicializovat čítač
counter=1
# Iteraci smyčky 5 krát
, zatímco
echo „hodnota Čítače = $counter“
((counter++))
hotovo
Výstup:
Spustit skript.
nahoru
‚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.
# 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.
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.
# 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.
spusťte skript s neplatnou volbou.
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.
# Initializ pult
counter=10
# Iteraci smyčky pro 6 krát
až
echo „aktuální hodnota čítače = $counter“
((counter–))
hotovo
Výstup:
Spustit skript.
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.
# Inicializovat číslo
číslo=0
# Nastavit vzor pro číselná data
vzor=’^+$‘
# Nastavit stav ukončení
až
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.
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.
# 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.
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.
# Inicializovat čítač
cnt=1
# Nastavení ukončení stavu
až
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.
zkontrolujte výstup skriptu.
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.
# 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.
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
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.
# 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.
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.
# 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.
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.
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.
dále, otevřete terminál a spusťte následující příkaz komunikovat s
první terminálu.
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“.
# 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.
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.
# 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ů.
Nyní spusťte skript.
Spusťte následující příkaz pro zobrazení výstupu skriptu.
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.