GNU/Linux >> Znalost Linux >  >> Linux

Skriptování v Linuxu:3 postupy pro smyčky while v Bash

Skriptování prostředí, konkrétně skriptování Bash, je skvělý způsob, jak automatizovat opakující se nebo únavné úkoly ve vašich systémech. Proč psát, když můžete plánovat a spouštět skripty bez použití rukou? Jedním z mnoha skriptovacích konstruktů je smyčka. Smyčka je část kódu, která sbírá data nebo generuje data a poté s daty provádí nějakou operaci a poté začíná proces znovu, dokud není splněna nějaká podmínka, není skript přerušen nebo dokud nejsou vyčerpána vstupní data. Když používáte Bash skriptování, někdy je užitečné provádět akce pomocí nějaké formy smyček.

[ Čtenářům se také líbilo: Pět způsobů použití operátorů přesměrování v bash ]

Základní příkazy smyčky ve skriptech Bash jsou for a while .

  • for smyčky se obvykle používají, když máte známý konečný seznam, jako je řada čísel, seznam položek nebo počítadla.
  • while smyčky lze použít se seznamy, ale jsou také užitečné pro podmínky, které ne mít známý limit. Můžete jej použít ke spouštění příkazů zatímco podmínka je pravdivá (nebo invertujte logiku a spusťte ji, když je podmínka nepravdivá).

Takže i když (zamýšlené slovní hříčkou) existují různé způsoby provádění smyček, v tomto článku se zaměřím na příklady pomocí while smyčky.

1. Jednoduchá smyčka while

Představte si, že instalujete obrovskou aplikaci a obáváte se, že nakonec může zabrat příliš mnoho místa v systému souborů.

Místo spuštění df v samostatném terminálu můžete spustit jednoduchý příkaz pro sledování využití disku každou sekundu. To vám umožní přerušit proces instalace, pokud zjistíte, že dosáhne tohoto limitu.

while true
do
  df -k | grep home
  sleep 1
done

V tomto případě spouštíte smyčku s true stavu, což znamená, že bude běžet navždy nebo dokud nestisknete CTRL-C. Proto jej musíte hlídat (jinak bude nadále využívat systémové prostředky).

Poznámka :Pokud používáte smyčku jako je tato, musíte zahrnout příkaz jako sleep aby měl systém mezi popravami čas na vydechnutí. Nepřetržité spouštění čehokoli by se mohlo stát problémem s výkonem, zvláště pokud příkazy uvnitř smyčky zahrnují I/O operace.

2. Čekání na splnění podmínky

Existují varianty tohoto scénáře. Například víte, že v určitém okamžiku proces vytvoří adresář a vy jen čekáte na ten okamžik, abyste provedli další ověření.

Můžete mít while smyčka, která bude neustále kontrolovat existenci tohoto adresáře a psát zprávu pouze tehdy, když adresář neexistuje.

Pokud chcete udělat něco propracovanějšího, můžete vytvořit skript a ukázat jasněji, že se podmínka smyčky stala pravdivou:

#!/bin/bash

while [ ! -d directory_expected ]
do
   echo "`date` - Still waiting" 
   sleep 1
done

echo "DIRECTORY IS THERE!!!"

3. Použití smyčky while k manipulaci se souborem

Další užitečná aplikace while smyčka je zkombinovat ji s read pro rychlý přístup ke sloupcům (nebo polím) z textového souboru a provádění některých akcí s nimi.

V následujícím příkladu jednoduše vybíráte sloupce z textového souboru s předvídatelným formátem a tisknete hodnoty, které chcete použít k naplnění /etc/hosts soubor.

Zde se předpokládá, že soubor má sloupce oddělené mezerami nebo tabulátory a že nejsou žádné mezery v obsahu sloupců. To by mohlo posunout obsah polí a neposkytnout vám to, co jste potřebovali.

Všimněte si, že právě provádíte jednoduchou operaci pro extrakci a manipulaci s informacemi a nezajímáte se o znovupoužitelnost příkazu. Zařadil bych to jako jeden z těch "rychlých a špinavých triků."

Samozřejmě, pokud to bylo něco, co byste dělali opakovaně, měli byste to spustit ze skriptu, použít správná jména proměnných a všechny ty osvědčené postupy (včetně transformace názvu souboru v argumentu a definování, kam se má výstup odeslat, ale dnes je téma while smyčky).

#!/bin/bash

cat servers.txt | grep -v CPU | while read servername cpu ram ip
do
   echo $ip $servername
done

[ Naučte se základy používání Kubernetes v tomto bezplatném cheatu. ] 

Sbalit

while smyčky jsou užitečné ve skriptech, které závisí na tom, zda je určitá podmínka pravdivá nebo nepravdivá, ale můžete je také použít interaktivně ke sledování určité podmínky.

Důležité věci k zapamatování jsou:

Vždy si ujasněte, co je podmínkou ukončit smyčka. Pokud to je něco, co očekáváte, že to uděláte sami, pomocí CTRL-C , pak sledujte svůj příkaz. Přemýšlejte o tom, jak rychle chcete, aby se každý cyklus smyčky opakoval. Pokud provedete jakoukoli operaci, která zahrnuje I/O uvnitř smyčky, stane se to kritickým aspektem plánování.

S ohledem na to se bavte while můžete.


Linux
  1. Udržujeme vás ve smyčce – příklady opakování pro, Zatímco, dokud

  2. 12 Bash pro příklady smyček pro vaše skriptování prostředí Linux

  3. Bash for smyčky Příklady

  1. Bash pro průvodce smyčkou a příklady

  2. Tip pro profesionály:Smyčky For, While a Until

  3. Pomocí a ve smyčce Bash while

  1. Bash Beginner Series #8:Loops in Bash

  2. Příklady Bash for Loop a While Loop

  3. Linux bash. pro smyčku a funkci, pro sčítání čísel