Sleva 50% všechny plány, omezený čas. Od $2.48/mo
Zbývá 10 min
Servery a OS

Bash if statement: Syntaxe, varianty, use cases, příkazy a víc!

Pius Bodenmann By Pius Bodenmann 10 min čtení Aktualizováno 28. ledna 2024
skriptování v Bash

V shell skriptování hrají Bash podmínky `if` klíčovou roli – umožňují programátorům řídit průběh skriptu podle aktuální situace. Stručně řečeno, příkaz `if` rozhoduje, co se stane dál, a to na základě výsledků testů, uživatelského vstupu nebo stavu systému. Je to způsob, jak skript navigovat různými větvemi logiky.

Při psaní Bash skriptů má příkaz `if` pevně danou strukturu. Obvykle začíná klíčovým slovem `if`, po kterém následujeif keyword, za nímž následuje podmínka, která potřebuje vyhodnocení, potom klíčové slovo a jeden nebo více příkazů, které se spustí, pokud je podmínka splněna.

Pro větší flexibilitu může příkaz if obsahovat také volitelný "elif" (else if) příkaz, který vstupuje do hry, když je počáteční podmínka nepravdivá. Umožňuje nám otestovat další podmínku a podle toho pokračovat. Kromě toho může příkaz if obsahovat volitelný příkaz „else", který se provede, pokud žádná z podmínek není splněna.

Kombinací podmínek `if` s dalšími příkazy Bash a funkcemi shellu lze sestavit pokročilé skripty schopné automatizovat složité úlohy a procesy. Čtěte dál a zjistěte více o podmínce `if` v Bash – syntaxi, použití i praktické příklady!

Syntaxe Bash if příkazu

Syntaxe Bash označuje pravidla, která určují strukturu a gramatiku příkazů a skriptů psaných v shellovém jazyce Bash. Syntaxe Bash zahrnuje řadu konstruktů a prvků, například:

  • Příkazy: Toto jsou jednotlivé spustitelné programy nebo vestavěné příkazy shellu, které slouží k provádění konkrétních úkolů. Právě s nimi strávíte většinu času, kdy budete pracovat s programováním v Bash.
  • Argumenty: Jsou to hodnoty předávané příkazům, které určují volby, parametry nebo vstupní data. Představte si je jako podmínky, které definují, jak má příkaz proběhnout.
  • Proměnné: Jsou to symboly představující hodnoty, které lze přiřazovat, upravovat nebo používat ve výrazech. Běžně slouží k určení hodnot, s nimiž pracují příkazy i jejich argumenty.
  • Přesměrování: Přesměrování umožňuje nasměrovat vstup, výstup nebo chybový výstup do souborů, zařízení nebo jiných příkazů. Bez něj hrozí, že příkazy zamíří na nesprávný cíl a rozbijí váš kód.
  • Trubky: Toto je mechanismus propojující výstup jednoho příkazu se vstupem jiného. Používá se především pro tvorbu pokročilých podmíněných příkazových řetězců ve složitých programech a pro vzájemné propojování příkazů.
  • Řídící struktury: Řídicí struktury jsou konstrukty, které řídí průběh vykonávání příkazů – například smyčky, podmínky a funkce. Porozumění řídicím strukturám je klíčové pro psaní nových příkazových řádků a dodává vašemu kódu další úroveň hloubky.
  • Komentáře: Jedná se o anotace, které shell ignoruje a slouží k dokumentaci kódu nebo vysvětlení jeho funkce. Jsou důležitými referenčními body při analýze a ladění, zejména v týmových projektech.

Syntaxe Bash musí být správně zapsána, aby ji shell dokázal interpretovat a spouštět příkazy. Chyby v syntaxi mohou způsobit chybové hlášky nebo neočekávané chování shellu.

Takto vypadá příkaz if v Bash v praxi:

if condition
then
   command1
   command2
   ...
   commandN
elif condition2
then
   commandA
   commandB
   ...
   commandC
else
   commandX
   commandY
   ...
   commandZ
fi

V tomto případě se "podmínka" vztahuje na test, který vrátí výsledek buď pravda nebo nepravda. Pokud je podmínka pravdivá, provedou se následující příkazy uvedené za klíčovým slovem "then". Řekněme nyní, že chceme místo toho vyhodnotit další podmínku. K tomu můžeme použít klíčové slovo "elif". Poskytuje způsob, jak zohlednit další možnost. Pokud žádná z podmínek není pravdivá, uplatní se příkazy uvedené za klíčovým slovem "else". Je to jako záložní plán. A nakonec, k označení konce příkazu if používáme klíčové slovo "fi".

Jak fungují Bash příkazy?

Při psaní Bash skriptů se příkaz if hodí vždy, když potřebujete řídit průběh skriptu podle výsledku podmínkového testu. Jeho úkolem je vyhodnotit podmínku a pokud platí, spustit příslušnou sadu příkazů.

Nyní se podívejme na to, jak obvykle probíhá zpracování příkazu if v Bash skriptu. Skript nejprve vyhodnotí podmínku uvedenou v příkazu if. Pokud je podmínka splněna, provedou se příkazy uvedené v bloku „then".

Pokud je však podmínka nepravdivá, skript pokračuje vyhodnocením dalších podmínek elif. Je-li některá z nich splněna, spustí se příkazy z příslušného bloku elif. Pokud není splněna žádná z podmínek uvedených v if ani elif, skript přejde k vykonání příkazů v bloku else – pokud byl takový blok přidán.

Příkaz `if` slouží v podstatě k větvení skriptu – umožňuje mu vykonat různé části kódu podle toho, jak dopadne daná podmínka. Ta může testovat například výsledek příkazu nebo hodnotu proměnné.

Bash if příkaz na příkladu

Pojďme opustit základní teorii a podívat se, jak lze příkaz Bash `if` využít v reálném vývoji. Zde je příklad, který ukazuje, jak příkaz Bash `if` funguje v praxi:

#!/bin/bash
# set a variable
x=5
# evaluate the variable
if [ $x -gt 4 ]
then
  echo "x is greater than 4."
else
  echo "x is less than or equal to 4."
fi

V tomto příkladu příkaz if vyhodnocuje hodnotu proměnné x. Pokud je x větší než 4, skript provede příkaz pro výpis „x is greater than 4". Pokud je x menší nebo rovno 4, skript provede příkaz pro výpis „x is less than or equal to 4".

Teď když máte jasnou představu o tom, jak základní příkaz Bash If funguje, pojďme se podívat na jeho varianty a související příkazy – konkrétně na Basic If Statements, Nested If statements, Bash If Else, If Elif Else a Case Statements.

Základní příkazy If

Začněme základním příkazem if v Bash. Příkaz if zkontroluje, zda je podmínka splněna, a podle toho spustí příslušný blok kódu. Syntaxe vypadá takto:

if [ condition ]
then
  commands
fi

V tomto případě skript vyhodnotí podmínku, a pokud je splněna, provede zadané příkazy. Pokud podmínka není splněna, skript přejde na další příkaz a blok v sekci "then" se nevykoná.

Vnořené příkazy If

Vnořený příkaz if, jak napovídá název, je příkaz if umístěný uvnitř jiného příkazu if. Tato struktura umožňuje provádět složitější podmínky a logiku v rámci skriptu. Zde je příklad vnořeného příkazu if:

if [ condition1 ]
then
  if [ condition2 ]
  then
    commands
  fi
fi

V příkazech si můžete všimnout, že skript nejprve vyhodnotí condition1. Pokud je condition1 pravdivá, přistoupí k vyhodnocení condition2. Pokud je i condition2 pravdivá, skript provede požadované příkazy.

Podmínky if-else v Bash

Příkaz Bash `if else` umožňuje ve skriptu větvit logiku podle toho, zda je podmínka splněna nebo ne. Díky tomu můžeš spouštět různé části kódu podle aktuální situace. Takhle vypadá jeho struktura:

if [ condition ]
then
  commands1
else
  commands2
fi

Tato konstrukce zajišťuje, že pokud je podmínka splněna, skript okamžitě provede „commands1". Pokud je však podmínka nepravdivá, přepne se na provedení „commands2".

Příkazy If, Elif a Else

Někdy potřebujete ošetřit více podmínek a jejich výsledků najednou. K tomu slouží příkaz if elif else. Podívejte se na následující syntaxi:

if [ condition1 ]
then
  commands1
elif [ condition2 ]
then
  commands2
else
  commands3
fi

Skript nejprve vyhodnotí condition1. Pokud je splněna, provede commands1. Pokud ne, přejde k vyhodnocení condition2. Je-li condition2 splněna, provede commands2. Pokud jsou obě podmínky nepravdivé, skript provede výchozí větev, tedy commands3.

Příkazy Case

V Bash existuje příkaz `case`, který funguje podobně jako `switch` v jiných programovacích jazycích. Umožňuje spustit různé bloky příkazů podle hodnoty proměnné. Podívejte se na strukturu:

case expression in
  pattern1)
    commands1;;
  pattern2)
    commands2;;
  pattern3)
    commands3;;
*)
default commands;;
esac

Skript vyhodnotí proměnnou expression a porovná ji s jednotlivými vzory. Pokud najde shodu, spustí odpovídající sadu příkazů. Pokud shodu nenajde, spustí výchozí příkazy. Vzor hvězdičky (*) funguje jako zástupný znak a zachytí vše, co neodpovídá žádnému z předchozích vzorů.

Logické operátory v Bash

Nedílnou součástí podmínek v Bash patří logické operátory. Ty umožňují spojovat více podmínek dohromady a rozhodovat se podle toho, zda je jejich kombinace pravdivá nebo nepravdivá. Bash nabízí tři základní logické operátory použitelné v příkazech if. Níže jsou příklady každého z nich.

  • Bash AND (&&):
if [ $age -ge 18 ] && [ "$citizen" == "yes" ]; then
  echo "You meet the criteria for voting."
fi
  • Logické nebo (||):
if [ "$status" == "active" ] || [ "$role" == "admin" ]; then
  echo "Access granted."
fi
  • Není rovno:
if(( ! $a == "true" )) then 
  echo "a" was initially false. 
else
  echo "a" was initially true. 
fi

Závěr

V tomto článku jsme si představili základy podmíněných příkazů if v Bash a ukázali, jak je používat. Probírali jsme také to, jak dokážou udělat váš kód přehlednějším a funkčnějším. Díky efektivnímu využití těchto podmínek můžete psát skripty, které zvládají složité úlohy a větvení logiky programu.

Jste v světě Linux nováčkem? Rádi vás provedeme každým krokem! Naše Linux VPS je ideálním výchozím bodem pro začátečníky – nabízí jednoduchost bez ústupků ve výkonu. Díky přehlednému rozhraní a odborné podpoře zvládnete možnosti Linux serveru využít snáz než kdy dřív. Ať už spouštíte web, testujete aplikace, nebo se teprve seznamujete se světem Linux, naše Linux VPS poskytuje bezpečné prostředí bez zbytečných komplikací. Začněte s Linux na pevných základech – prohlédněte si naše možnosti Linux VPS a vydejte se na cestu s Linux ještě dnes.

Linux VPS hosting

Pořiď si economy nebo premium Linux VPS pro hosting tvého webu nebo vzdálenou plochu, za nejnižší cenu na trhu. VPS běží na Linux KVM pro vyšší efektivitu a na výkonném hardwaru s NVMe SSD úložištěm pro vyšší rychlost.

Číst dál

Často kladené otázky

Mohu v Bash podmínkách if používat logické operátory?

Ano, můžete použít logické operátory jako & a || v podmínkách Bash příkazu if. Například, if [ $var -gt 0 ] && [ $var -lt 10 ]; then … provede blok kódu, pokud $var je větší než 0 a menší než 10.

Mohu v jednom příkazu if použít více podmínek?

Ano, v jednom příkazu `if` lze kombinovat více podmínek pomocí logických operátorů, jako jsou -a (AND) nebo -o (OR) pro jejich kombinaci. Například, if [ $var -gt 0 -a $var -lt 10 ]; then … provede blok kódu, pokud $var je větší než 0 A zároveň menší než 10.

Mohu v Bash podmínkách použít substituci příkazů?

Ano, v Bash příkazech `if` lze použít substituci příkazů – stačí příkaz uzavřít do $() nebo zpětná lomítka (). Například, pokud [ $(whoami) == "root" ]; pak … provede daný blok kódu, pokud je aktuální uživatel root.

[[ vs [ vs ( vs ((): Jaký je rozdíl mezi těmito operátory v Bash?

Stručně řečeno: [[ slouží pro pokročilé podmínkové testy. [ slouží pro základní podmínkové testy. ( slouží pro seskupení příkazů do subshellů a jejich spuštění. (( slouží pro aritmetické operace.

 

Sdílet

Další z blogu

Pokračuj ve čtení.

Titulní obrázek k článku Nejlepší self-hosted aplikace, které můžeš spustit s Cosmos Cloud, s panely aplikací kolem dashboardu Cosmos.
Servery a OS

Nejlepší self-hosted aplikace, které můžeš spustit s Cosmos Cloud: soubory, média, hesla, automatizace a další!

Možná jsi už nastavil Cosmos Cloud a teď chceš vidět, které aplikace se k němu hodí, nebo ses ještě nerozhodl pro Cosmos a chceš jen zjistit, jak dobře se hodí k tvému workflow

Nick SilverNick Silver 16 min čtení
Titulní obrázek k článku Portainer vs Cosmos Cloud pro správu Docker aplikací s diagramem hybridního setupu a neonovými bloky ops vs access.
Servery a OS

Portainer vs Cosmos Cloud: nejlepší volba pro správu Docker aplikací

Pokud už znáš Docker a chceš jen čistší způsob, jak spustit rostoucí stack aplikací, tady je krátká odpověď na Portainer vs Cosmos Cloud. Portainer je silnější volba pro přímou

Nick SilverNick Silver 14 min čtení
Titulní grafika k článku Cosmos Cloud vs CasaOS vs Umbrel zobrazující tři self-hosted cesty uvnitř jednoho abstraktního světa cloudových sítí.
Servery a OS

Cosmos Cloud vs CasaOS vs Umbrel: která self-hosted platforma se hodí k tvému setupu?

Krátká odpověď zní, že CasaOS je stále nejjednodušší místo, kde začít, Umbrel má nejčistší kurátorovaný pocit a Cosmos Cloud dává větší smysl, jakmile chceš pevnější kontrolu nad doménami

Nick SilverNick Silver 11 min čtení

Hotov k nasazení? Od 2,48 $/měs.

Nezávislý cloud od roku 2008. AMD EPYC, NVMe, 40 Gbps. Vrácení peněz do 14 dnů.