Ve skriptování bash pomáhají podmíněné příkazy při kontrole, zda je konkrétní podmínka pravdivá nebo nepravdivá. Když je podmínka pravdivá, skript shellu spustí nebo spustí blok kódu, který je daný skriptem. V opačném případě skript přeskočí provádění kódu a přeskočí na další podmíněný příkaz.
Ve skriptování bash zahrnují podmíněné příkazy if , pokud je to jinak , if-elif-else a vnořené if prohlášení. V této příručce prozkoumáme, jak se tyto podmíněné příkazy používají při provádění skriptů.
Příkaz if
Ve své nejjednodušší podobě má příkaz „if“ následující syntaxi.
if [[ conditional_statement ]] then command fi
Podmíněný příkaz if začíná znakem if klíčové slovo. Poté následuje podmíněný příkaz, po kterém následuje pak klíčové slovo, které předchází příkazu, který se má provést, pokud podmíněný příkaz platí.
Pokud tedy condition_statement platí, pak příkaz je proveden. Pokud se vyhodnotí jako False, nic se nestane a příkaz je zcela ignorováno a skript se ukončí.
Vezměme si příklad bash skriptu, který kontroluje, zda je zadané skóre větší než 80.
$ vim check_score.sh
Zkopírujte a vložte skript.
#!/bin/bash echo -n "Please Enter a score: " read score if [[ $score -gt 80 ]] then echo "You have passed the exam!" fi
Dávejte pozor na odsazení. Přidělte oprávnění ke spuštění pomocí chmod příkaz takto:
$ chmod +x check_score.sh
Poté spusťte skript.
$ ./check_score.sh
Pokud zadáte hodnotu, která je větší než 80, podmíněný příkaz bude platit a zpráva s odezvou se vytiskne na stdout
Pokud je však zadaná hodnota skóre menší než 80 – podmíněný příkaz se vyhodnotí jako nepravdivý a nic se nestane. Skript se jednoduše ukončí.
Příkaz if-else
V předchozím shell skriptu byl proveden pouze jeden příkaz po podmíněném příkazu vyhodnoceném jako True. Když byla podmínka vyhodnocena jako False, nic se nevytisklo a skript se právě ukončil. The if- else příkaz nám pomáhá provést příkaz, pokud je podmínka vyhodnocena jako nepravda. Ostatní po příkazu následuje příkaz nebo příkaz, pokud by podmínka vrátila hodnotu False.
if [[ conditional_statement ]] then command else command fi
Upravme předchozí skript shellu a přidejte jiný prohlášení
#!/bin/bash echo -n "Please Enter a score: " read score if [[ $score -gt 80 ]] then echo "You have passed the exam!" else echo "You have failed the exam, please try again" fi
Zde skript shellu spustí blok kódu po else pouze v případě, že je první podmínka vyhodnocena jako nepravdivá – to znamená, že poskytnuté skóre je menší než 80.
V prvním případě je zadané skóre 90 , která je větší než 80, a proto se provede první příkaz ve skriptu a skript se ukončí.
Ve druhém případě je však zadáno 70, a protože hodnota je menší než 80, skript přeskočí první příkaz, protože je vyhodnocen jako nepravda, a pokračuje ve vykonání druhého příkazu po else prohlášení.
Příkaz if-elif-else
Dosud jsme zkontrolovali jednu podmínku, která se vyhodnotí jako True nebo False. elif Příkaz (else -if ) se používá tam, kde existuje několik podmíněných příkazů, které mají různé výsledky. Pokud se jedna podmínka vyhodnotí jako False, pokračuje kontrola, zda jsou ostatní podmínky pravdivé. Zde je jednoduchá syntaxe příkazu if-elif-else.
if [[ conditional_statement_1 ]] then command_1 elif [[ conditional_statement_2 ]] then command_2 else command_3 fi
Zvažte skript níže
#!/bin/bash echo -n "Please Enter a score: " read score if [[ $score -ge 90 ]] then echo "Excellent!" elif [[ $score -ge 70 ]] then echo "Congratulations! Job well done!" elif [[ $score -ge 50 ]] then echo "Fairly done. There's more room for improvement!" else echo "Poorly done" fi
Pokud je v tomto příkladu skóre větší nebo rovno 90, vypíše se zpráva Výborně! Pokud je však skóre menší než 90, ale větší nebo rovno 70, vypíše Blahopřejeme! Dobrá práce! .
Pokud je skóre menší než 70, ale větší nebo rovno 50, vytiskne se zpráva Fairly done. Je zde více prostoru pro zlepšení!
A nakonec, pokud je skóre nižší než 50, vytiskne se text Špatně provedeno.
Vnořený příkaz if
Vnořený příkaz if obsahuje příkaz if uvnitř jiného příkazu if. když platí jedna podmínka, skript pokračuje ke kontrole další podmínky. V níže uvedené ukázce vezmeme vstupní hodnoty 3 číselných hodnot a zkontrolujeme, která z nich je největší.
#!/bin/bash read -p "Please enter the value of j:" j read -p "Please enter the value of k:" k read -p "Please enter the value of l:" l if [ $j -gt $k ] then if [ $j -gt $l ] then echo "j is greatest" else echo "l is greatest" fi else if [ $k -gt $l ] then echo "k is greatest" else echo "l is greatest" fi fi
Shrnutí
To byl přehled podmíněných příkazů v bash skriptech na vysoké úrovni. Jak jste viděli, podmíněné příkazy se používají k určení výsledku skriptu na základě nastavených podmíněných výrazů. Doufejme, že nyní máte základní základy podmíněných příkazů.