Příklad Bash If-Then-Else

Bash If Then Else Example



V této lekci uvidíme, jak můžeme použít příkazy If-Then-Else ve skriptech prostředí Bash, které píšeme. Příkazy If-Then-Else jsou užitečným nástrojem, který poskytuje způsob, jak definovat cestu akce skriptu při splnění některých podmínek. Podívejme se, jaká je syntaxe příkazů If-Then-Else:

-liNĚKTERÉ PŘÍKAZY;
pakPOTOM PŘÍKAZY;
jinýJINÉ PŘÍKAZY;
být

Pokud je ve výše uvedeném příkazu shledáno, že NĚKTERÉ PŘÍKAZY jsou pravdivé nebo že jeho návratový stav je 0, pak POTOM PŘÍKAZY budou provedeny. Pokud tomu tak není, jsou provedeny JINÉ PŘÍKAZY. V NĚKTERÝCH PŘÍKAZECH obvykle provádíme srovnání řetězců nebo porovnání hodnot ve formě celých čísel. Můžeme také provádět mnoho operací, které zahrnují soubory. Podívejme se na několik příkladů primárních příkazů, které se používají hlavně při práci s podmínkami založenými na souborech:







Hlavní Význam
[-to] Vrátí hodnotu true, pokud existuje FILE.
[-b] Vrátí hodnotu true, pokud FILE existuje a je blokovým speciálním souborem.
[-C] Vrátí hodnotu true, pokud FILE existuje a je speciální znakový soubor.
[-d] Vrátí hodnotu true, pokud FILE existuje a je adresář.
[ -A ] Vrátí hodnotu true, pokud existuje FILE.
[-f] Vrátí hodnotu true, pokud FILE existuje a je běžným souborem.
[-g] Vrací true, pokud existuje FILE a je nastaven jeho bit SGID.
[-h] Vrací true, pokud FILE existuje a je symbolickým odkazem.
[ -k ] Vrátí hodnotu true, pokud FILE existuje a je nastaven jeho lepivý bit.
[-p] Vrátí hodnotu true, pokud FILE existuje a je pojmenovaný kanál (FIFO).
[-r] Vrací true, pokud FILE existuje a je čitelný.
[-s] Vrací true, pokud FILE existuje a má velikost větší než nula.
[-t] Vrátí hodnotu true, když je otevřen deskriptor souboru FD a odkazuje na terminál.
[-u] Vrátí hodnotu true, pokud FILE existuje a je nastaven jeho bit SUID (set user ID).
[ -v ] Vrací true, pokud FILE existuje a je zapisovatelný.
[-X] Vrací true, pokud FILE existuje a je spustitelný.
[-Ó] Vrací true, pokud FILE existuje a je ve vlastnictví skutečného ID uživatele.
[-G] Vrací true, pokud FILE existuje a je ve vlastnictví efektivního ID skupiny.
[-THE] Vrací true, pokud FILE existuje a je symbolickým odkazem.
[-N] Vrací true, pokud FILE existuje a byl změněn od posledního čtení.
[-S] Vrátí hodnotu true, pokud FILE existuje a je soket.

THEN-COMMANDS a ELSE-COMMANDS mohou být jakékoli platné operace UNIX nebo jakýkoli spustitelný program. Všimněte si, že pak a být příkazy jsou odděleny středníkem, protože jsou považovány za zcela oddělené prvky skriptu.



If-Then-Else Jednoduchý příklad

Začněme naši lekci na velmi jednoduchém příkladu s příkazy If-Then-Else.
Zde je ukázkový program:



Pokud Příklad

Pokud Příklad





Zde je výstup, který vidíme při spuštění našeho skriptu:

$. ifelse1.sh
Hodnoty jsou stejné!
$

Použití argumentů příkazového řádku

Ve svých skriptech můžeme také použít argumenty příkazového řádku a počet argumentů a samotné hodnoty použít jako podmínku v příkazu IF, který definujeme. Nejprve definujeme textový soubor s následujícím obsahem:



Jmenuji se LinuxHint. Miluji servery, zejména ty Ubuntu. Jsou takoví
terminální!

Nyní můžeme napsat skript, který zjistí, zda se slovo vyskytuje v textovém souboru nebo ne. Pojďme nyní definovat skript:

vyhodil „Nalezení 1 $ za 2 $“
rukojeť 1 $ 2 $
-li [ $? -narozený 0 ]
pak
vyhodil '$ 1 nebyl nalezen v souboru $ 2.'
jiný
vyhodil '$ 1 nalezen v souboru $ 2.'
být
vyhodil 'Skript dokončen.'

Tento skript je velmi dynamický. Zvažuje slovo k nalezení a soubor k hledání z příkazového řádku samotného. Nyní jsme připraveni spustit náš skript:

. ifelse2.sh láska ahoj.txt

Uvidíme výstup jako:

Hledání láskyvahoj.txt
láska nalezenav souborahoj.txt.
Skript dokončen.

Kontrola počtu argumentů příkazového řádku

Uvnitř příkazu IF můžeme dokonce zkontrolovat, kolik argumentů příkazového řádku bylo předáno příkazu, abychom mohli jednat stejně:

počet=$ #
-li [ ! počet $ -gt 1 ]
pak
vyhodil 'Nedostatek argumentů'
jiný
vyhodil 'Dobrá práce!'
být

Pojďme nyní spustit tento skript, uvidíme následující výstup:

Argumenty příkazového řádku

Argumenty příkazového řádku

Prohlášení If-Then-Elif-Else

Můžeme také mít více příkazů IF ve stejném bloku, abychom zúžili rozhodovací cestu, kterou náš program potřebuje k provádění námi definovaných příkazů. Zde je syntaxe k definování více příkazů IF v našich skriptech:

-liZKUŠEBNÍ PŘÍKAZY;
pak
VÝSLEDKY-PŘÍKAZY;
elif
DALŠÍ PŘÍKAZY;
pak
DALŠÍ VÝSLEDKY-PŘÍKAZY;
jiný
ALTERNÁTOVÉ PŘÍKAZY;
být

Vypadá to docela dobře známé a snadno se sleduje. Pojďme definovat jednoduchý příklad, abychom zjistili, jak strom funguje:

počet=$ #
-li [ počet $ -ekv 1 ]
pak
vyhodil 'Byl nalezen pouze jeden argument.'
elif [ počet $ -ekv 2 ]
pak
vyhodil 'Lepší, byly nalezeny dva argumenty.'
jiný
vyhodil 'Dobrá práce, nalezeno mnoho argumentů!'
být

Zde je to, co dostaneme zpět s tímto příkazem:

Pokud Pak Elif Else příklad

Pokud Pak Elif Else příklad

Použití případových stanovišť

Příkazy IF-ELSE jsou užitečné, pokud máte velký seznam možností, pro které se musíte rozhodnout. Ale v případě, že chcete provést akci pouze v několika případech přesné shody s výsledkem, můžeme použít příkazy CASE i ve skriptech Bash. Jeho syntaxe vypadá takto:

případVÝRAZvPŘÍPAD 1)PŘÍKAZY K VÝKONU;
PŘÍPAD 2)PŘÍKAZY K VÝKONU;
PŘÍPAD 2)PŘÍKAZY K VÝKONU;
...)PŘÍKAZY K VÝKONU;
*)PŘÍKAZY K VÝKONU;
esac

Poslední případ s * funguje jako výchozí případ a bude proveden, pokud nebude shledán žádný z výše definovaných případů.

Pojďme rychle sestavit jednoduchý příklad pomocí příkazů CASE:

případ '$ 1' v
1)
vyhodil 'Hodnota je 1.'
;;
2)
vyhodil 'Hodnota je 2.'
;;
3)
vyhodil 'Hodnota je 3.'
;;
*)
vyhodil 'Byla předána jiná hodnota.'
esac

Každý příkaz CASE je ukončen; (dvojité středníky). Zde je to, co dostaneme zpět s tímto příkazem:

PŘÍPAD příklad

PŘÍPAD příklad

Závěr

V této lekci jsme se podívali na to, jak můžeme použít příkazy IF-ELSE, IF-THEN-ELIF a CASE ve skriptech Bash, které definujeme, k provedení konkrétních akcí na základě hodnot, které existují v našich programech nebo které uživatel předává pomocí pozičních parametry.