GNU/Linux >> Znalost Linux >  >> Linux

Bash if..else Prohlášení

Tento tutoriál vás provede základy Bash if Statement a ukázat vám, jak jej používat ve vašich skriptech shellu.

Rozhodování je jedním z nejzákladnějších pojmů 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 se používají ke spuštění kódu na základě určité podmínky.

if Prohlášení #

Bash if kondicionály mohou mít různé podoby. Nejzákladnější if výpis má následující tvar:

if TEST-COMMAND
then
  STATEMENTS
fi

if příkaz začíná if klíčové slovo následované podmíněným výrazem a then klíčové slovo. Příkaz končí fi klíčové slovo.

Pokud TEST-COMMAND vyhodnotí jako True , STATEMENTS je popraven. Pokud TEST-COMMAND vrátí False , nic se neděje; STATEMENTS ignorovat.

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

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

#!/bin/bash

echo -n "Enter a number: "
read VAR

if [[ $VAR -gt 10 ]]
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 echo příkaz uvnitř then klauzule bude provedena.

The variable is greater than 10.

if..else Prohlášení #

Bash if..else výpis má následující tvar:

if TEST-COMMAND
then
  STATEMENTS1
else
  STATEMENTS2
fi

Pokud TEST-COMMAND vyhodnotí jako True , STATEMENTS1 bude popraven. Jinak, pokud TEST-COMMAND vrátí False , STATEMENTS2 bude popraven. Můžete mít pouze jeden else klauzule v prohlášení.

Pojďme přidat else klauzule k předchozímu příkladu skriptu:

#!/bin/bash

echo -n "Enter a number: "
read VAR

if [[ $VAR -gt 10 ]]
then
  echo "The variable is greater than 10."
else
  echo "The variable is equal or less than 10."
fi

Pokud spustíte kód a zadáte číslo, skript vytiskne jinou zprávu podle toho, zda je číslo větší nebo menší / rovno 10.

if..elif..else Prohlášení #

Bash if..elif..else výpis má následující tvar:

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

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

Můžete mít jeden nebo více elif doložky v prohlášení. else klauzule je nepovinná.

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

Pojďme přidat elif klauzule k předchozímu skriptu:

#!/bin/bash

echo -n "Enter a number: "
read VAR

if [[ $VAR -gt 10 ]]
then
  echo "The variable is greater than 10."
elif [[ $VAR -eq 10 ]]
then
  echo "The variable is equal to 10."
else
  echo "The variable is less than 10."
fi

Vnořené if Výroky #

Bash vám umožňuje vnořit if příkazy v rámci if prohlášení. Můžete umístit více if příkazy uvnitř jiného if prohlášení.

Následující skript vás vyzve k zadání tří čísel a vytištění největšího čísla ze 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 [[ $VAR1 -ge $VAR2 ]]
then
  if [[ $VAR1 -ge $VAR3 ]]
  then
    echo "$VAR1 is the largest number."
  else
    echo "$VAR3 is the largest number."
  fi
else
  if [[ $VAR2 -ge $VAR3 ]]
  then
    echo "$VAR2 is the largest number."
  else
    echo "$VAR3 is the largest number."
  fi
fi

Takto bude výstup vypadat:

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

Více podmínek #

Logické OR a AND operátory umožňují použít více podmínek v if prohlášení.

Zde je další verze skriptu pro tisk největšího čísla ze tří čísel. V této verzi namísto vnořeného if používáme logické AND (&& ) operátor.

#!/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 [[ $VAR1 -ge $VAR2 ]] && [[ $VAR1 -ge $VAR3 ]]
then
  echo "$VAR1 is the largest number."
elif [[ $VAR2 -ge $VAR1 ]] && [[ $VAR2 -ge $VAR3 ]]
then
  echo "$VAR2 is the largest number."
else
  echo "$VAR3 is the largest number."
fi

Testovací operátoři #

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

test EXPRESSION
[ EXPRESSION ]
[[ EXPRESSION ]]

Aby byl skript přenosný, raději použijte starý test [ příkaz, který je dostupný ve všech shellech POSIX. Nová upgradovaná verze test příkaz [[ (dvojité závorky) je podporována na většině moderních systémů používajících Bash, Zsh a Ksh jako výchozí prostředí.

Chcete-li negovat 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ělováním slov a shlukováním.

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

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

Závěr č.

if , if..else a if..elif..else příkazy vám umožňují řídit tok provádění skriptu Bash vyhodnocením daných podmínek.

Pokud máte nějaké dotazy nebo zpětnou vazbu, neváhejte zanechat komentář.


Linux
  1. Bash If-Else prohlášení s příklady

  2. 4 Příklady prohlášení Awk If ( if, if else, if else if, :? )

  3. 5 Příklady prohlášení o případu Bash

  1. Jak používat příkaz if else Conditionals ve skriptu Bash

  2. 4 Příklady příkazů Bash If ( If then fi, If then else fi, If elif else fi, Nested if )

  3. Bash/sh příkaz „jestli je to jinak“.

  1. Prohlášení Bash if elif else:Komplexní návod

  2. Bash deklarovat Příkaz:Syntaxe a příklady

  3. Existuje příkaz goto v bash?