Android

Bash if..else prohlášení

Introduction to Bash Scripting 06 - A Simple "If" Statement

Introduction to Bash Scripting 06 - A Simple "If" Statement

Obsah:

Anonim

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

V tomto tutoriálu vás seznámíme se základy příkazů Bash if a ukážeme vám, jak je používat ve skriptech shellu.

if Statement

Bash, if mohou mít podmínění různé formy. Nejzákladnější příkaz if má následující podobu:

if TEST-COMMAND then STATEMENTS fi

Příkaz if začíná klíčovým slovem if následovaným podmíněným výrazem a klíčovým slovem then . Prohlášení končí klíčovým slovem fi .

Pokud se TEST-COMMAND vyhodnotí jako True , STATEMENTS bude proveden. Pokud TEST-COMMAND vrátí False , nic se nestane, STATEMENTS ignorovány.

Obecně je dobrým zvykem vždy odsadit kód a oddělit bloky kódu prázdnými řádky. Většina lidí se rozhodne použít odsazení 4 nebo 2 místa. Díky odsazení a prázdným řádkům je váš kód čitelnější a organizovanější.

Podívejme se na následující ukázkový skript, který kontroluje, zda je dané číslo větší než 10.

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

Uložte 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 zadáte 15, test příkaz se vyhodnotí jako true protože 15 je větší než 10 a bude proveden příkaz echo uvnitř klauzule then .

The variable is greater than 10.

if..else Statement

Příkaz Bash if..else má následující podobu:

if TEST-COMMAND then STATEMENTS1 else STATEMENTS2 fi

Pokud se TEST-COMMAND vyhodnotí jako True , bude proveden STATEMENTS1 . V opačném případě, pokud TEST-COMMAND vrátí hodnotu False , bude proveden STATEMENTS2 . Ve výpisu můžete mít pouze jednu else klauzuli.

Přidáme klauzuli else k předchozímu příkladu skriptu:

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." else echo "The variable is equal or less than 10." fi

if..elif..else Statement

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

if TEST-COMMAND1 then STATEMENTS1 elif TEST-COMMAND2 then STATEMENTS2 else STATEMENTS3 fi

Pokud se TEST-COMMAND1 vyhodnotí jako True , STATEMENTS1 bude proveden. Pokud se TEST-COMMAND2 vyhodnotí jako True , STATEMENTS2 bude proveden. Pokud žádný z testovacích příkazů nevyhodnotí True , STATEMENTS2 se provede.

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

Podmínky se vyhodnocují postupně. Jakmile se podmínka vrátí na True zbývající podmínky se neprovádějí a řízení programu se přesune na konec příkazů if .

Přidáme do předchozího skriptu klauzuli elif :

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." elif] then echo "The variable is equal to 10." else echo "The variable is less than 10." fi

Hnízdí- if prohlášení

Bash umožňuje vnořit příkazy if příkazech if . Můžete vložit více if do jiného if .

Následující skript vás vyzve k zadání tří čísel a vytiskne největší číslo z těchto tří čísel.

#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] then if] then echo "$VAR1 is the largest number." else echo "$VAR3 is the largest number." fi else if] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi fi

Výstup bude vypadat takto:

Enter the first number: 4 Enter the second number: 7 Enter the third number: 2 7 is the largest number. Namísto použití vnořených příkazů if je obvykle efektivnější použít příkaz case.

Více podmínek

Logické operátory OR a AND vám umožňují použít více příkazů v příkazech if .

Zde je další verze skriptu pro tisk největšího počtu ze tří čísel. V této verzi místo vnořených příkazů if použijeme logický operátor AND ( && ).

#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] &&] then echo "$VAR1 is the largest number." elif] &&] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi

Zkušební operátoři

V Bash má příkaz test jednu z následujících forem syntaxe:

test EXPRESSION]

Chcete-li negovat testovací výraz, použijte logického operátora NOT ( ! ). 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 nebo globpingem.

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

  • -n VAR - Pravda, pokud je délka VAR větší než nula. -z VAR - True, pokud je VAR prázdný. STRING1 = STRING2 - Pravda [STRING1 a STRING2 jsou si rovni. STRING1 != STRING2 - Pravda STRING1 a STRING2 nejsou stejná. INTEGER1 -eq INTEGER2 - True INTEGER1 a INTEGER2 jsou si rovni. INTEGER1 -gt INTEGER2 - True INTEGER1 je větší než INTEGER2. INTEGER1 -lt INTEGER2 - True INTEGER1 je menší než INTEGER2. INTEGER1 -ge INTEGER2 - True INTEGER1 je stejný nebo větší než INTEGER2. INTEGER1 -le INTEGER2 - True INTEGER1 je stejný nebo menší než INTEGER2. -h FILE - Pravda, pokud FILE existuje a je symbolickým odkazem. -r FILE - Pravda, pokud FILE existuje a je čitelný. -w FILE - Pravda, pokud FILE existuje a je zapisovatelný. -x FILE - Pravda, pokud FILE existuje a je spustitelný. -d FILE - Pravda, pokud FILE existuje a je adresářem. -e FILE - Pravda, pokud FILE existuje a je souborem, bez ohledu na typ (uzel, adresář, soket atd.). -f FILE - Pravda, pokud existuje SOUBOR a jedná se o běžný soubor (nikoli adresář nebo zařízení).

Závěr

if..else if , if..else a if..elif..else vám umožňují kontrolovat průběh spouštění skriptu Bash vyhodnocením daných podmínek.

bash terminál