v tomto tutoriálu vás provedeme základy prohlášení Bash if a ukážeme vám, jak jej používat ve skriptech shell.

rozhodování je jedním z nejzákladnějších konceptů počítačového programování. Stejně jako v každém jiném programovacím jazyce, if if..else if..elif..else a vnořené if příkazy v Bashi lze použít ke spuštění kódu na základě určité podmínky.,

pokud příkaz #

Bash if podmínky mohou mít různé formy. Nejzákladnější if prohlášení má následující podobu:

if TEST-COMMANDthen STATEMENTSfi

if prohlášení začíná if klíčové slovo následuje podmíněný výraz a then klíčové slovo. Příkaz končí klíčovým slovemfi.,

Pokud TEST-COMMAND vyhodnocuje, aby True STATEMENTS dostane popraven. PokudTEST-COMMAND vrátí False, nic se nestane, STATEMENTS se ignoruje.

Obecně platí, že je vhodné vždy odsadit kód a oddělit bloky kódu prázdnými řádky. Většina lidí se rozhodne použít buď 4-space nebo 2-space odsazení. Odsazení a prázdné řádky, aby váš kód čitelnější a organizovaný.,

podívejme se na následující příklad skriptu, který zkontroluje, zda dané číslo je větší než 10,

#!/bin/bashecho -n "Enter a number: "read VARif ]then echo "The variable is greater than 10."fi

Uložit kód do souboru a spusťte jej z příkazového řádku:

bash test.sh

skript vás vyzve k zadání čísla. Pokud, například, můžete zadat 15, test příkaz vyhodnotí, aby true, protože 15 je větší než 10, a echo příkaz uvnitř then doložka bude popraven.

if..,else #

Bash if..else prohlášení má následující podobu:

if TEST-COMMANDthen STATEMENTS1else STATEMENTS2fi

Pokud TEST-COMMAND vyhodnocuje, aby True, STATEMENTS1 bude popraven. Jinak, pokud TEST-COMMAND výnosy False STATEMENTS2 bude popraven. Ve výpisu můžete mít pouze jednu klauzuli else.,

přidat else klauzule na předchozí příklad skriptu:

Pokud spustit kód, a zadejte číslo, skript se bude tisknout různé zprávy založené na tom, zda číslo je větší nebo menší/rovno 10.

if..eLife..else #

Bash if..elif..else prohlášení má následující podobu:

if TEST-COMMAND1then STATEMENTS1elif TEST-COMMAND2then STATEMENTS2else STATEMENTS3fi

Pokud TEST-COMMAND1 vyhodnocuje, aby True, STATEMENTS1 bude popraven., Pokud TEST-COMMAND2 vyhodnocuje, aby True STATEMENTS2 bude popraven. Pokud žádný z testovacích příkazů nehodnotí True, provede se STATEMENTS2.

ve výpisu můžete mít jednu nebo více doložek elif. Klauzule else je volitelná.

podmínky se vyhodnocují postupně., Jakmile podmínka vrátí True zbývající podmínky nejsou provedeny a řízení programu se přesune na konec if prohlášení.

přidat elif klauzule předchozí skript:

Vnořené příkazy if #

Bash umožňuje hnízdo if prohlášení do if prohlášení. Můžete umístit víceif prohlášení uvnitř jinéhoif prohlášení.,

následující skript vás vyzve k zadání tří čísel a vytiskne největší číslo mezi třemi čísly.

Zde je, jak bude výstup vypadat takto:

Enter the first number: 4Enter the second number: 7Enter the third number: 27 is the largest number.
Obecně platí, že je efektivnější použít case prohlášení namísto vnořené if prohlášení.

Více Podmínkám #

logické OR AND operátoři umožňují použít více podmínek v if prohlášení.,

zde je další verze skriptu pro tisk největšího počtu ze tří čísel. V této verzi, namísto vnořené if prohlášení, že jsme pomocí logických AND (&&) operátor.

Test Operátory #

V Bash, test příkaz má následující syntaxi formy:

test EXPRESSION]

Pro skript přenosný, raději používat starý test [ příkaz, který je k dispozici na všech POSIX skořápky., Nové modernizované verze test příkaz [[ (dvojitých hranatých závorek) je podporován na většině moderních systémů pomocí Bash, Zsh, Ksh, jako výchozí shell.

Chcete-li vyvrátit testovací výraz, použijte logický NOT (!) operátor. Při porovnávání řetězců vždy používejte jednoduché nebo dvojité uvozovky, abyste se vyhnuli problémům s rozdělením slov a globbingem.,

Níže jsou uvedeny některé z nejčastěji používaných operátorů:

  • -n VAR – Pravda, když je délka VAR je větší než nula.
  • -z VAR – Pravda, pokud VAR je prázdný.
  • STRING1 = STRING2 – Pravda, pokud STRING1 STRING2 jsou stejné.
  • STRING1 != STRING2 – Pravda, pokud STRING1 STRING2 nejsou stejné.,
  • INTEGER1 -eq INTEGER2 – True if INTEGER1 and INTEGER2 are equal.
  • INTEGER1 -gt INTEGER2 – True if INTEGER1 is greater than INTEGER2.
  • INTEGER1 -lt INTEGER2 – True if INTEGER1 is less than INTEGER2.
  • INTEGER1 -ge INTEGER2 – True if INTEGER1 is equal or greater than INTEGER2.
  • INTEGER1 -le INTEGER2 – True if INTEGER1 is equal or less than INTEGER2.,
  • -h FILE – True if the FILE exists and is a symbolic link.
  • -r FILE – True if the FILE exists and is readable.
  • -w FILE – True if the FILE exists and is writable.
  • -x FILE – True if the FILE exists and is executable.,
  • -d FILE – Pravda, pokud FILE existuje a je to adresář.
  • -e FILE – Pravda, pokud FILE existuje a je to soubor, bez ohledu na typ (uzel, adresář, soket, atd.).
  • -f FILE – Pravda, pokud FILE existuje a je obyčejný soubor (ne adresář nebo zařízení).,

Závěr #

if if..else if..elif..else prohlášení umožní ovládat tok Bash skript, je exekuce na základě vyhodnocení dané podmínky.