Pri písaní skriptov v Bash sa s prácou s reťazcami stretávajú nielen skúsení programátori, ale aj nováčikovia v prostredí Bash. Najčastejšie je to potrebné pri čítaní príkazov, ktoré používateľ zadáva ako argumenty do spustiteľného skriptu, a pri spracovaní textových súborov. A jedným z nevyhnutných trikov je v tomto prípade porovnávanie strún.

Tento článok sa bude zaoberať porovnaním reťazcov Bash, ako aj niektorými nuansami používania porovnávacích operácií a riešením bežných chýb.

Tieto operácie vám umožňujú určiť, či sú porovnávané reťazce rovnaké:

  • = - rovný napr ak [ "$x" = "$y" ]
  • == - synonymum pre operátor "=", napríklad if [ "$x" == "$y" ]
  • != - nie to isté, napr if [ "$x" != "$y" ]

#!/bin/bash
testuser=anton
ak [ $USER = $testuser ]
potom
echo "Vitajte $testuser"
fi

Výsledok skriptu:

Pri kontrole rovnosti s príkazom test(synonymum s hranatými zátvorkami ) sa berú do úvahy všetky interpunkčné znamienka a rozdiely medzi malými a veľkými písmenami v porovnávaných reťazcoch.

Niektoré funkcie zhody reťazcov so vzormi:

# vráti hodnotu true, ak reťazec obsiahnutý v $x začína "y"
[[ $x == y* ]]
# vráti hodnotu true, ak reťazec $x obsahuje presne dva znaky "y*"
[[ $x == "y*" ]]
# vráti hodnotu true, ak $x obsahuje názov súboru obsiahnutého v aktuálnom adresári, ktorý začína "y"
[ $x == y* ]
# vráti hodnotu true, ak sa reťazec $x rovná dvom znakom "y*"
[ "$x" == "y*" ]

Napríklad kontrola bash reťazca, či začína na y:

#!/bin/bash
x=yandex
[[ $x == y* ]]
echo $?

Výsledok spustenia kódu:

Skript vypíše 0 (nulu), pretože sme požiadali o kód chyby poslednej vykonanej inštrukcie. Kód 0 znamená, že skript bežal bez chýb. Naozaj, premenná x $ obsahuje reťazec yandex, ktorá sa začína znakom „y“. V opačnom prípade môže byť napísané „1“. Toto je celkom praktický spôsob ladenia skriptov.

Porovnávanie reťazcov podľa abecedy v Bash

Úloha sa komplikuje pri pokuse určiť, či je reťazec predchodcom iného reťazca vo vzostupnom poradí. Ľudia, ktorí píšu skripty v bash shell, sa často stretávajú s dvomi problémami týkajúcimi sa operácií väčších a menších ako s porovnávaním reťazcov Linuxu, ktoré majú pomerne jednoduché riešenia:

Po prvé, znaky „väčšie ako“ a „menej ako“ musia byť zakódované pridaním spätnej lomky (\), pretože inak ich bude shell považovať za znaky presmerovania a reťazce za názvy súborov. Toto je jeden z tých prípadov, kedy je vystopovanie chyby dosť ťažké.

#!/bin/bash
# nesprávne použitie operátorov porovnávania reťazcov
val1=bejzbal
val2=hokej
ak [ $val1 > $val2 ]
potom

inak

fi

Čo sa stane, ak porovnáte bash struny:

Ako vidíte, samotný symbol „väčší ako“ vo svojej priamej forme priniesol nesprávne výsledky, hoci neboli vygenerované žiadne chyby. V tomto prípade tento znak spôsobil presmerovanie výstupného toku, takže neboli nájdené žiadne syntaktické chyby a výsledkom bol súbor s názvom hokej:

Ak chcete túto chybu opraviť, musíte opustiť znak ">", aby podmienka vyzerala takto:

...
ak [ $val1 \> $val2 ]
...

Potom bude výsledok programu správny:

Po druhé, reťazce zoradené pomocou operátorov „väčšie ako“ a „menej ako“ sú usporiadané inak, ako sa to deje s príkazom triediť. Tu sa problémy rozpoznávajú ťažšie a ak sa pri porovnávaní nerozlišujú veľké a malé písmená, nemusia sa vôbec vyskytnúť. V tíme triediť a test Porovnanie je iné:

#!/bin/bash
val1=Testovanie
val2=testovanie
ak [ $val1 \> $val2 ]
potom
echo "$val1 je väčší ako $val2"
inak
echo "$val1 je menej ako $val2"
fi

Výsledok kódu:

V tíme test reťazce s veľkými písmenami budú najskôr predchádzať reťazcom s malými písmenami. Ak sú však rovnaké údaje zapísané do súboru, na ktorý sa potom použije príkaz triediť, potom budú na prvom mieste reťazce s malými písmenami:

Rozdiel medzi ich prácou je v tom test na určenie poradia triedenia sa za základ berie usporiadanie znakov podľa ASCII tabuľky. AT triediť používa tiež poradie zoradenia určené pre jazykové nastavenia miestnych nastavení.

Kontrola reťazca, či neobsahuje prázdnu hodnotu

Porovnanie pomocou operátorov -z a -n používa sa na určenie, či premenná obsahuje obsah. Týmto spôsobom môžete nájsť prázdne riadky v bash. Príklad:

#!/bin/bash
val1=testovanie
val2=""
# skontroluje, či je reťazec prázdny
ak [ -n $val1 ]
potom
echo "Reťazec "$val1" nie je prázdny"
inak
echo "Reťazec "$val1" je prázdny"
fi
# skontroluje, či je reťazec prázdny
ak [ -z $val2 ]
potom
echo "Reťazec "$val2" je prázdny"
inak
echo "Reťazec "$val2" nie je prázdny"
fi
ak [ -z $val3 ]
potom
echo "Reťazec "$val3" je prázdny"
inak
echo "Reťazec "$val3" nie je prázdny"
fi

Výsledok kódu:

Tento príklad vytvorí dve reťazcové premenné - val1 a val2. Prevádzka -n určuje, či má premenná val1 nenulová dĺžka a -z kontroly val2 a val3 na nulu. Je pozoruhodné, že tento nebol definovaný až do okamihu porovnania, ale tlmočník sa domnieva, že jeho dĺžka sa stále rovná nule. Táto nuansa by sa mala zohľadniť pri rôznych kontrolách scenára. A ak si nie ste istí, aká hodnota je obsiahnutá v premennej a či je vôbec nastavená, mali by ste to skontrolovať pomocou operátora -n alebo -z a až potom ho používajte na určený účel.

Stojí za to venovať pozornosť funkcii -n. Ak sa mu na test odošle nedeklarovaná alebo prázdna premenná, vráti hodnotu true, nie false. V takýchto prípadoch by ste mali kontrolovaný reťazec (premennú) uzavrieť do dvojitých úvodzoviek, aby vyzeral takto:

...
ak [ -n "$val1" ]
...

závery

Prezentované operácie porovnávania reťazcov Bash majú určité nuansy, ktoré sa oplatí pochopiť, aby sa predišlo chybám pri skriptovaní. Ale v praxi je veľa takýchto situácií, takže pamätať si všetko (a ešte viac, popisovať) nebude fungovať.

if-else podmienka použitá v BASH skriptochČasto. Samotná podmienka má trochu zvláštny tvar [[ podmienka ]]. Dávajte pozor na zarážky. Bez nich podmienka nebude fungovať. Dávam zoznam logických operátorov pre podmienku [[ ? ]]:

Zoznam logických operátorov, ktoré
používa sa pre konštrukciu if-then-else-fi

#!/bin/bash if [[ $1 > 2 ]] potom #, ak [[ ? ]] ozvena $1" väčšia ako 2" inak # ak nie pravdivá ozvena $1" menšia ako 2 alebo 2" fi

Niektorým z vás bude pripadať zvláštny operátor rovnosti -eq. Skúste použiť známe operátory >

Povedzme, že máte skript a vyžaduje sa overenie používateľa. Ak používateľ nie je root, skript sa zastaví.

#!/bin/bash if [ "$(whoami)" != "root" ]; potom echo "Nemáte povolenie na spustenie $0." exit1; fi

Často je potrebné skontrolovať hodnotu premennej. Ak v premennej nič nie je, môžete skript zastaviť.

#!/bin/bash if [ -n "$num" ]; potom "premenná má niečo a môžete spustiť ďalší proces" inak echo "prázdna premenná, zastavte skript" exit 0; fi

Ak je premenná prázdna, môže sa vyplniť.

#!/bin/bash if [ -z "$num" ]; potom echo "premenná je prázdna" num=1 else echo "num="$num fi

Prázdnej premennej je možné priradiť predvolenú hodnotu. Tento záznam je kratší ako v predchádzajúcom príklade.

#!/bin/bash # Napíšte DEFAULT, ak nie sú žiadne argumenty príkazového riadka [ -z "$arg1" ] && arg1=DEFAULT echo $arg1

V skriptoch shellu Bash môžeme porovnávať čísla. Ak chcete vykonať operáciu porovnávania čísel v Bash, musíte použiť stav "test" v rámci cyklu if alebo. V tomto príspevku vám povieme, ako porovnávať čísla v bash.

Operátory na porovnanie bashových čísel

operátorčo robípríklad
-ekvporovnať číslice v bash pre rovnosť, vráti 0, ak sa rovnajúak [ $a -eq $b ] potom
-geporovnanie čísel v bash, ak sú väčšie alebo rovné. Výsledok vráti 0, ak je väčší alebo rovnýak [ $a -ge $b ] potom
-gtporovnáva čísla v bash, ak sú väčšie ako.ak [ $a -gt $b ] potom
-leporovnáva čísla v bash, ak sú menšie alebo rovnaké.ak [ $a -le $b ] potom
-ltporovnáva čísla v bash, ak je menej.ak [ $a -lt $b ] potom
-neporovnáva čísla v bash, ak nie sú rovnaké alebo nie.ak [ $a -ne $b ] potom

Podrobné príklady operátorov porovnávania čísel v Bash:

1. operátor-ekv

Tento operátor porovnáva čísla, skontroluje, či sa hodnota rovná alebo nie. Ak sa rovná, vráti sa 0.

# cat test.sh #!/bin/bash echo "zadať hodnotu premennej" prečítať echo "zadať hodnotu premennej" prečítať b if [ $a -eq $b ] potom echo "Vrátiť hodnotu:: $?" echo "a a b sú rovnaké" inak echo "Vrátená hodnota::$?" echo "a a b nie sú rovnaké" fi #

prevedenie:

# sh test.sh zadajte hodnotu premennej 2 zadajte hodnotu premennej 3 Návratová hodnota:: 1 a a b sa nerovnajú # sh test.sh zadajte hodnotu premennej 2 zadajte hodnotu premennej 2 Návratová hodnota:: 0 a a b sa rovnajú #

Vo vyššie uvedenom príklade sme prvýkrát vzali čísla 2 a 3 a systém vrátil hodnotu 1, ale keď sme vzali rovnaké hodnoty pre a a b, premenná vráti nulu.

2. operátor-ge

Tento operátor porovnáva čísla a kontroluje hodnoty väčšie alebo rovné. Ak je hodnota väčšia alebo rovná, jej návratová hodnota je 0.

# cat test1.sh #!/bin/bash #diff program pre -ge echo "zadať hodnotu pre premennú" prečítať echo "zadať hodnotu pre premennú b" prečítať b ak [ $a -ge $b ] potom echo "vrátiť hodnotu : :$?" echo "a je väčšie alebo rovné b" inak echo "návratová hodnota::$?" echo "a nie je väčšie alebo rovné b" fi #

3. operátor -gt

Tento operátor porovnávania čísel otestuje, či je číslo väčšie. Ak je hodnota väčšia, vráti 0.

# cat test2.sh #!/bin/bash #differ for -gt b=100 echo "Zadajte hodnotu väčšiu ako 100" čítajte a if [ $a -gt $b ] potom echo "Veľmi dobré" inak echo "Nie veľmi dobre "fi

4. operátor-le

Tento operátor porovnávania čísel otestuje hodnoty menšie alebo rovné. Ak je menšia alebo rovná, návratová hodnota je 0.

#diff program pre -le b=5 echo "zadajte hodnotu menšiu alebo rovnú 5" prečítajte a if [ $a -le $b ] potom echo "správne" inak echo "false" fi #

5. operátor-lt

Tento operátor porovnávania čísel bude testovať hodnoty lacnejšie. Ak je číslo menšie, návratová hodnota je 0.

Porovnávanie reťazcov v Bash nespôsobuje žiadne problémy, kým nevznikne úloha porovnať dva reťazce bez ohľadu na veľkosť písmen. Uvediem niekoľko možností riešenia problému, ktoré sám používam. Vlastnosťou týchto riešení je použitie iba vstavaných funkcií shellu Bash.

Najprv vytvorím dve premenné str1 a str2 obsahujúce reťazce, ktoré sa majú porovnávať. Budú použité v nasledujúcich príkladoch kódu.

#!/bin/bash str1 = "Reťazec na porovnanie" str2 = "reťazec na porovnanie"

Prvá verzia porovnávania reťazcov bez rozlišovania malých a veľkých písmen, ktorú chcem navrhnúť, používa ovládanie možností shellu pomocou vstavaného príkazu shopt.

shopt -s nocasematch [[ $str1 == $str2 ]] && echo "match" || echo "nezhoda" shopt -u nocasematch

Ďalšia verzia porovnávania reťazcov bez ohľadu na veľkosť písmen je založená na princípe samoprenášania reťazcov do spoločného prípadu. Tento variant kódu funguje na Bash verzie 4 a novšej. Použitie v staršej verzii Bash bude mať za následok chybu.

Takže na porovnanie reťazcov prenášaných na malé písmená môžete použiť nasledujúci kód.

[[ " $( str1 , ) " == " $( str2, ) " ]] && echo "zhoda" || echo "nezhoduje sa"

Ak chcete previesť porovnávané reťazce na veľké písmená, môžete použiť nasledujúci kód.

[[ " $( str1 ^^ ) " == " $( str2 ^^ ) " ]] && echo "zhoda" || echo "nezhoduje sa"

Alternatívne môžu byť reťazce vynútené v čase deklarácie premennej. To sa vykonáva pomocou vstavaného príkazu deklarovať shell.

Ak chcete deklarovať premennú obsahujúcu text s malými písmenami, použite nasledujúci kód.

#!/bin/bash deklarovať -l str = "Reťazec ťavieho prípadu"

V dôsledku vykonania tohto kódu bude premenná str obsahovať reťazec s malými písmenami, a to aj napriek tomu, že priraďovaný reťazec bol napísaný s veľkými písmenami. Veľkosť písmen v reťazci už nastavenom v premennej môžete zmeniť nasledovne.

#!/bin/bash str = "Reťazec ťavieho prípadu" deklarovať -l str str = $str echo $str

Ak chcete previesť reťazec na veľké písmená, vo vyššie uvedenom príklade kódu by ste mali zmeniť volanie príkazu deklarovať pomocou prepínača -u namiesto prepínača -l.

Teraz je možné vykonať porovnanie reťazcov bez ohľadu na veľkosť písmen pomocou príkazu deklarovať nasledovne.

deklarovať -l str1_l = $str1 deklarovať -l str2_l = $str2 [[ $str1_l == $str2_l ]] && echo "match" || echo "nezhoduje sa"

Ktorékoľvek z týchto porovnávaní reťazcov bez ohľadu na veľkosť písmen je možné použiť v skriptovaní Bash. Preto, ak používate Bash verziu 4 a vyššiu, môžete si vybrať ten, ktorý sa vám najviac páči. Ak je verzia Bash menšia ako 4, potom by sa mala použiť prvá možnosť, špecifikujúca možnosť nocasematch pomocou vstavaného shellu shopt.

Táto téma je štvrtou témou v sérii jazykov bash shell. Bude hovoriť o takých kontrolných štruktúrach jazyka, ako sú podmienené príkazy. Predtým, ako pristúpime k ich opisu, je potrebné sa zaoberať niektorými nuansami, vďaka ktorým bude zváženie nižšie uvedeného materiálu zrozumiteľnejšie.
Najprv sa pozrime, čo je zoznam príkazov. Zoznam príkazov je jeden príkaz, kanál alebo postupnosť príkazov/riadkov oddelených jedným z nasledujúcich operátorov: ";", "&&", "||", ukončené bodkočiarkou.
; - operátor postupného vykonávania niekoľkých príkazov. Každý nasledujúci príkaz sa začne vykonávať až po dokončení predchádzajúceho (či už úspešného alebo neúspešného);
&& - operátor vykonania príkazu až po úspešnom vykonaní predchádzajúceho;
|| - príkaz na vykonanie príkazu až po chybnom vykonaní predchádzajúceho.
Kód úspechu je 0 a kód chyby nie je nula (v závislosti od typu chyby). Nezamieňať s bežnými programovacími jazykmi, keď 1 je pravda a 0 je nepravda.
Teraz môžeme pristúpiť k priamemu zváženiu podmienených vyhlásení.

operátor variantu prípadu

Všeobecná syntax príkazu case je:

case value in
šablóna1) zoznam1;;
vzor2 | šablóna3) zoznam2;;
esac

Logická postupnosť vykonania príkazu case:
a) vyhľadá sa prvý vzor zodpovedajúci hodnote;
b) ak sa nájde, vykoná sa zoznam jemu zodpovedajúcich príkazov ukončený znakom ";;";
c) kontrola sa po konštrukcii prípadu prenesie na prevádzkovateľov.
Vzor a zoznam sú oddelené znakom ")". Jednému zoznamu príkazov môže zodpovedať niekoľko podmienok, v takom prípade musia byť oddelené symbolom "|".
V šablónach môžete použiť znaky "*", "?", "", ktoré boli popísané v druhej téme cyklu. S ich pomocou môžete implementovať inštrukciu, ktorá funguje ako predvolená v príkaze switch v jazykoch ako C, PHP.
Uvediem príklad použitia case:
echo -n "[Universal Viewer] Zadajte názov súboru: "; čítať veľkosť súboru "$File" v *.jpg|*.gif|*.png) eog $Súbor ;; *.pdf) evince $File ;; *.txt) menej $Súbor ;; *.html) firefox $Súbor ;; /dev/*) echo "No, to sú strašidelné súbory." ;; *) echo "Dobre, dobre - nie také všestranné." echo "Nepoznám tento typ súboru. Neviem, ako ho zobraziť." ;; esac
Ďalší príklad použitia konštrukcie prípadu:
echo "Chyba. Komu mám poslať správu?" echo "Šéfovi: b" echo "Kolegom: c" echo "Nikomu: žiadny kľúč" čítať prípad odpovede $odpoveď v b|B) mail –s "záznam chýb" šéf< error.log;; c|C) mail –s "Help! error log" –c denis nick < error.log;; *) echo "error"; exit;; esac

Podmienený príkaz if

Všeobecná syntax príkazu if je:

ak zoznam1 potom
zoznam2

fi

Hranaté zátvorky tu označujú voliteľné konštrukcie. Logická postupnosť vykonania príkazu case:
a) zoznam1 sa vykoná;
b) ak sa vykoná bez chýb, vykoná sa zoznam2. V opačnom prípade sa vykoná zoznam3 a ak sa dokončí bez chyby, vykoná sa zoznam4. Ak list3 vráti aj kód chyby, vykoná sa zoznam5;
c) riadenie sa prenáša na operátorov po konštrukcii if.
Uvediem príklad použitia, ak:
ak grep -q Bash súbor, potom echo "Súbor obsahuje aspoň jedno Bash slovo." fi
Keď sú if a then na rovnakom riadku, potom konštrukcie if a then musia končiť bodkočiarkou. Napríklad:
$if[$? –ne0]; potom echo "Chyba"; fi
Teraz, keď vieme, že je možné vložiť if a then na rovnaký riadok, prepíšme vyššie uvedený príklad:
if grep -q Bash súbor; potom echo "Súbor obsahuje slovo Bash." fi

testovací príkaz a podmienené výrazy

Vo vyššie uvedenom príklade sa namiesto analýzy výstupného kódu použije kontrola stavu. Dve formy takéhoto testu sú ekvivalentné: vstavaný príkaz testu a [podmienka]. Ak chcete napríklad skontrolovať, či súbor existuje, napíšte:
test -e<файл>
alebo
[-e<файл> ]
Ak sa použijú hranaté zátvorky, musia byť od seba oddelené medzerou, pretože "[" je názov príkazu a "]" je požadovaný posledný argument na jeho ukončenie.
Ak je podmienka úspešne skontrolovaná, vráti sa 0 a ak je nepravda, kód chyby je 1.
Príkaz test môže skontrolovať, či je reťazec prázdny. Neprázdny reťazec má za následok výstupný kód 0. Prázdny, respektíve - 1. Napríklad:
$ test $USER; echo $? 0
Konštrukcia "" je všestrannejšia ako "". Táto rozšírená verzia testovacieho príkazu. V rámci tejto konštrukcie sa nevykonáva žiadna dodatočná interpretácia názvov súborov a nevykonáva sa žiadne rozdelenie argumentov na samostatné slová, ale je povolené nahradzovanie parametrov a príkazov. Napríklad:
file=/etc/passwd if [[ -e $file ]] potom echo “Súbor s heslom nájdený.” fi
Konštrukcia "" je vhodnejšia ako "", pretože pomôže vyhnúť sa niektorým logickým chybám. Napríklad operátory "&&", "||", "<" и ">" vnútri "" sú úplne platné, zatiaľ čo vnútri "" generujú chybové hlásenia.
Konštrukcia "(())" umožňuje výpočet aritmetických výrazov v nej. Ak je výsledok výpočtu nula, vráti sa chybový kód. Nenulový výsledok výpočtu dáva návratový kód 0. To znamená presný opak testu a inštrukcií "" diskutovaných vyššie.
Príkaz if umožňuje vnorené kontroly:
if echo "Ďalší *if* je vnútri prvého *if*." if [[ $comparison = "integer" ]] potom ((a< b)) else [[ $a < $b ]] fi then echo "$a меньше $b" fi

Podmienené výrazy je možné kombinovať pomocou bežných logických operácií:
! <выражение>- odmietnutie;
<выражение1>-a<выражение2>- logické AND;
<выражение1>–o<выражение2>- logické ALEBO.

Základné podmienené výrazy pre súbory:
-e - súbor existuje;
-f - bežný súbor (nie súbor adresára alebo zariadenia);
-s - nenulová veľkosť súboru;
-d - súbor je adresár;
-b - súbor je blokové zariadenie (disketa, cdrom atď.);
-c - súbor je znakové zariadenie (klávesnica, modem, zvuková karta atď.);
-p - súbor je potrubie;
-h - súbor je symbolický odkaz;
-L - súbor je symbolický odkaz;
-S - súbor je soket;
-t - súbor je spojený s koncovým zariadením;
-r - súbor je čitateľný (pre používateľa, ktorý spustil skript);
-w - súbor je zapisovateľný (pre používateľa, ktorý spustil skript);
-x - súbor je k dispozícii na spustenie (používateľovi, ktorý spustil skript);
-g - (sgid) príznak pre súbor alebo adresár je nastavený;
-u - (suid) príznak pre súbor je nastavený;
-k - je nastavený príznak sticky bit;
-O - ​​ste vlastníkom súboru;
-G - patríte do rovnakej skupiny ako súbor;
-N - súbor bol zmenený od posledného čítania;
súbor1 -nt súbor2 – súbor1 je novší ako súbor2;
súbor1 -ot súbor2 – súbor1 je starší ako súbor2;
súbor1 -ef súbor2 - súbor1 a súbor2 sú pevné odkazy na rovnaký súbor.

Elementárne podmienené výrazy na porovnávanie reťazcov:
-z string – dĺžka reťazca je 0;
-n reťazec – dĺžka reťazca sa nerovná 0;
reťazec1 == reťazec2 – reťazce sa zhodujú (podobne ako „=“);
riadok1 !== riadok2 – riadky sa nezhodujú (podobne ako „!=“);
riadok 1< строка2 – строка1 предшествует строке2 в лексикографическом порядке;
riadok1 > riadok2 - riadok1 nasleduje po riadku2 v lexikografickom poradí.
Aritmetický podmienený výraz má formát:
argument1 operácia argument2, kde argumenty sú celé čísla a sú povolené nasledujúce operácie:
-eq - rovný;
-ne - nerovná sa;
-lt - menej;
-le - menšie alebo rovné;
-gt - viac;
-ge - väčšie alebo rovné;
< - меньше (внутри двойных круглых скобок);
<= - меньше или равно (внутри двойных круглых скобок);
> - väčšie ako (v dvojitých zátvorkách);
>= - väčšie alebo rovné (v dvojitých zátvorkách).

Prepíšme predchádzajúci príklad pomocou príkazu if:
echo "Chyba. Komu mám poslať správu?" echo "Šéfovi: b" echo "Kolegom: c" echo "Nikomu: žiadny kľúč" čítať odpoveď if [ "$answer" == "b" –o "$answer" == "B" ]; potom šéf "chybového denníka" pošty< error.log; elif [ "$answer" == "c" –o "$answer" == "C" ]; then mail –s "Help! error log" –c denis nick < error.log; else echo "error"; exit; fi

V ďalšej téme sa budem naďalej zaoberať riadiacimi štruktúrami bash shellu. Konkrétne sa budú brať do úvahy operátory slučky. A teraz čakám na komentáre a kritiku :).

UPD: Ďakujem používateľovi