GNU/Linux >> Znalost Linux >  >> Linux

Bash If Else Syntaxe s příklady

Při práci s Bash a skriptováním shellu možná budete muset použít podmínky ve vašem skriptu.

V programování jsou podmínky klíčové:používají se k potvrzení, zda jsou nějaké podmínky jsou pravdivé nebo ne.

V tomto tutoriálu se zaměříme na jeden z podmíněných příkazů jazyka Bash:příkaz Bash if else.

Uvidíme, jak můžete tento příkaz použít k podmíněnému provádění vašich skriptů.

Dozvíte se také, jak můžete použít vnořený Bash if else příkazy k vytvoření složitějšího kódu.

Příkaz Bash If Else

Abyste mohli provést Bashův příkaz „if else“, musíte použít čtyři různá klíčová slova :if, then, else a fi :

  • pokud :představuje podmínku, kterou chcete zkontrolovat;
  • pak :pokud je předchozí podmínka pravdivá, provede se konkrétní příkaz;
  • jinak :pokud je předchozí podmínka nepravdivá, proveďte další příkaz;
  • fi :zavře příkaz „if, then, else“.

Při použití příkazu „jestli je to jinak“ budete muset uzavřít podmínky v jednoduchých nebo dvojitých hranatých závorkách.

if [[ condition ]]
then
  <execute command>
else
  <execute another command>
fi

Upozorňujeme, že výraz „ELSE“ je nepovinný , pokud jej vynecháte, nic se neprovede, pokud se podmínka vyhodnotí jako nepravda.

Poznámka :podmínku musíte oddělit od hranatých závorek mezerou, jinak se může objevit chyba syntaxe.

Příklady v opačném případě

Nyní, když víte více o Bash „jestli jinak“ prohlášení, podívejme se, jak jej můžete použít v příkladech z reálného světa.

V této části vytvoříme skript, který vypíše zprávu, pokud ji spustí uživatel root.

Pokud skript nespustí uživatel root, napíše další vlastní zprávu.

Abychom mohli zkontrolovat, zda je skript spuštěn uživatelem root, musíme zjistit, zda je UID volajícího nulové.

#!/bin/bash

# If the user is root, its UID is zero.

if [ $UID  -eq  0 ]
then
  echo "You are root!"
else
  echo "You are not root."
fi

Jak bylo uvedeno dříve, „else ” není povinné.

Pokud v našem dříve vytvořeném skriptu vynecháme, stále bychom byli schopni provést první příkaz „then“.

#!/bin/bash

# If the user is root, its UID is zero.

if [ $UID  -eq  0 ]
then
  echo "You are root!"
fi

Co když teď chcete do svých skriptů přidat další příkazy „pokud“?

Bash If Elif Statement

Pokud Elif ” se v Bash používá k přidání dalších příkazů “if” do vašich skriptů.

Abyste mohli provést příkaz Bash „if elif“, musíte použít pět různých klíčových slov:if, then, elif, else a fi :

  • pokud :představuje podmínku, kterou chcete zkontrolovat;
  • pak :pokud je předchozí podmínka pravdivá, provede se konkrétní příkaz;
  • elif :používá se k přidání další podmínky k vašemu výpisu;
  • jinak :pokud jsou předchozí podmínky nepravdivé, proveďte další příkaz;
  • fi :zavře příkaz „if, elif, then“.
if [[ condition ]]
then
  <execute command>
elif [[ condition ]]
then
  <execute another command>
else
  <execute default command>
fi

Opět platí, že příkaz „ELSE“ je volitelný, takže jej můžete vynechat, pokud nepotřebujete výchozí příkaz.

if [[ condition ]]
then
  <execute command>
elif [[ condition ]]
then
  <execute another command>
fi

Příklady Elif

V naší předchozí části jsme použili „jestli jinak ” pro kontrolu, zda je uživatel root nebo ne.

V této sekci zkontrolujeme, zda je uživatel root nebo zda má UID 1002.

Pokud tomu tak není, ukončíme skript a vrátíme výzvu uživateli.

if [[ $UID  -eq  0 ]]
then
  echo "You are root!"
elif [[ $UID  -eq 1002 ]]
then
  echo "You are user, welcome!"
else
  echo "You are not welcome here."
  exit 1;
fi

Gratulujeme, nyní víte, jak používat „if elif “ prohlášení!

Co když teď chcete mít více podmínek pod stejným příkazem „if“?

Více podmínek v If Else

Chcete-li mít více podmínek zapsaných ve stejném příkazu „jestli je to jinak“, musíte podmínky oddělit operátorem „AND“ nebo operátorem „OR“.

# AND operator used in if else.

if [[ <condition_1> && <condition_2> ]];
then
   <execute command>
fi

# OR operator used in if else.
if [[ <condition_1> || <condition_2> ]];
then
   <execute_command>
else
   <execute_another_command>
fi

Pokud například chcete napsat skript, který zkontroluje, že jste uživatel root a že jste zadali správný parametr, napište:

#!/bin/bash
 
# If the user is root and the first parameter provided is 0.
if [[ $UID -eq 0 && $1 -eq 0 ]];
then
    echo "You provided the correct parameters"
else
    echo "Wrong parameters, try again"
fi

Vnořené příkazy If Else

V některých případech chcete implementovat vnořené podmínky, aby bylo možné podmínky zkontrolovat za předběžných podmínek.

Chcete-li mít vnořené příkazy „if else“, jednoduše musíte zahrnout příkaz „if“ do jiného příkazu „if“ a zavřít svůj vnořený příkaz před přiloženým příkazem.

if [[ condition ]]
then  
  if [[ other condition ]]
  then
    <execute command>
  else
    <execute another command>
  fi
fi

Poznámka :ujistěte se, že máte závěrečný příkaz „fi“ pro každý příkaz „if“, který otevřete. Jedno jediné „fi“ prostě nestačí pro více příkazů „if“.

Příklady vnořených příkazů

Řekněme například, že chcete ověřit, že uživatel je root, než ověříte, že první uvedený argument je nula.

Chcete-li to vyřešit, napsali byste vnořený příkaz „if, then, else“ následujícím způsobem:

#!/bin/bash

if [[ $UID -eq 0 ]]
then  
  if [[ $1 -eq 0 ]]
  then
    echo "You are allowed to execute this script."
  else
    echo "You should have provided 0 as the first argument."
  fi
fi

Bashovy testy

Jak jste si pravděpodobně všimli, v předchozích částech jsme použili operátor „-eq“, abychom porovnali hodnotu proměnné s číslem.

Provedli jsme jednoduchou kontrolu rovnosti, ale co když chcete provést kontrolu nerovnosti?

Co kdybyste například chtěli zkontrolovat, zda je hodnota větší než dané číslo?

Chcete-li to provést, budete potřebovat Bashovy testy .

Bash testy jsou sada operátorů, které můžete použít ve svých podmíněných příkazech za účelem vzájemného porovnání hodnot.

Bash testy lze vypsat spuštěním příkazu „help test“.

$ help test

Při psaní Bash testů máte v podstatě tři možnosti:

  • Podmínky zápisu do souborů a adresářů :pokud existují, pokud se jedná o soubor znaků, soubor zařízení a tak dále;
  • Na čísla napište podmínky :pokud jsou si navzájem rovny, pokud je jeden větší než druhý;
  • Zapište podmínky do řetězců :pokud je nastavena řetězcová proměnná nebo pokud jsou dva řetězce navzájem stejné.

Podmínky souboru Bash

Podmínky souboru Bash se používají ke kontrole, zda soubor existuje nebo ne, zda jej lze přečíst, upravit nebo spustit.

Testy souborů Bash jsou popsány v tabulce níže:

Operátor Popis
-e Zkontroluje, zda soubor existuje nebo ne
-d Zkontroluje, zda je soubor adresář
-b Zkontroluje, zda je soubor blokovým zařízením
-c Zkontroluje, zda je soubor znakovým zařízením
f1 -nt f2 Pokud je soubor f1 novější než soubor f2
f1 -ot f2 Pokud je soubor f1 starší než soubor f2
-r Soubor lze číst (oprávnění ke čtení)
-w Soubor lze upravit (oprávnění k zápisu)
-x Soubor lze spustit (oprávnění ke spuštění)

Chcete-li například zkontrolovat, zda je soubor adresář, napsali byste následující skript

#!/bin/bash

# Checking the first argument provided
if [[ -d $1 ]]
then  
  echo "This is a directory"
else
  echo "Not a directory"
fi

Podmínky počtu Bash

Podmínky Bashových čísel se používají k porovnání dvou čísel:pokud jsou stejná, pokud je jedno větší než druhé nebo nižší než jiné.

Zde je tabulka nejpoužívanějších podmínek Bashových čísel:

Operátor Popis
num1 -eq číslo2 Zkontrolujte, zda se čísla rovnají
num1 -ne číslo2 Zkontrolujte, zda se čísla nerovnají
num1 -lt číslo2 Kontrola, zda je num1 nižší než num2
num1 -le číslo2 Nižší nebo rovno num2
num1 -gt číslo2 Větší než num2
num1 -ge číslo2 Větší nebo rovno num2

Chcete-li například zkontrolovat, zda se číslo nerovná nule, napište :

#!/bin/bash

# Checking the first argument provided
if [[ $1 -eq 0 ]]
then  
  echo "You provided zero as the first argument."
else
  echo "You should provide zero."
fi

Podmínky bashových řetězců

Podmínky řetězce Bash se používají ke kontrole, zda jsou dva řetězce stejné, nebo zda je řetězec prázdný.

Zde je tabulka podmínek hlavního řetězce Bash:

Operátor Popis
str1 = str2 Zkontroluje, zda jsou řetězce stejné nebo ne
str1 != str2 Zkontroluje, zda se řetězce liší
-z str1 Zkontroluje, zda je str1 prázdný
-n str1 Zkontroluje, zda str1 není prázdné

Chcete-li například zkontrolovat, zda uživatel poskytl vašemu skriptu hodnotu, napište :

#!/bin/bash

# Checking the first argument provided
if [[ -n $1 ]]
then  
  echo "You provided a value"
else
  echo "You should provide something"
fi

Závěr

V dnešním tutoriálu jste se dozvěděli o výroku Bash „If Else“.

Na příkladech jste viděli, že můžete vytvářet složitější příkazy:pomocí příkazů elif a vnořených příkazů.

Konečně jste se dozvěděli o Bash testech, co to jsou a jak se používají ke kontrole podmínek ve skriptech.

Pokud máte zájem o správu systému Linux, máme na webu kompletní sekci, která se jí věnuje, takže se na ni určitě podívejte!


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

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

  3. '&&' vs. '&' s příkazem 'test' v Bash

  1. Bash pole s příklady

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

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

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

  2. Jak napsat Bash skript s příklady

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