Poznej Linux
- Menu je zatím ve výstavbě
Skriptům nebo funkcím můžete předávat parametry. Ty jsou pak k dispozici buď jako pole všech parametrů reprezentované proměnnou $@
nebo jako jednotlivé parametry v proměnných $1
, $2
, atd. Proměnná $0
obsahuje jméno souboru s vlastním skriptem.
Vše si ozřejmíme na následujícím příkladě. Mějme skript:
#!/bin/bash echo "Soubor se skriptem: $0" echo "Prvni parametr: $1" echo "Druhy parametr: $2" echo "Treti parametr: $3" echo "Pole vsech parametru: $@"
Tento skript spustíme následujícím způsobem:
./skript jedna dve tri
Následně obdržíme tento výpis:
Soubor se skriptem: ./skript Prvni parametr: jedna Druhy parametr: dve Treti parametr: tri Pole vsech parametru: jedna dve tri
Někdy se hodí přímá interakce s uživatelem. V takové situaci můžeme použít příkaz read
, který uloží uživatelský vstup do proměnné. Ukažme si to na příkladu:
#!/bin/bash while true; do echo -n "Zadejte polomer (Ctrl-C ukonci skript): " read POLOMER echo -n "Obsah kruhu s polomerem $POLOMER je" echo "scale=3; 3.14*$POLOMER^2" | bc done
Tento program využívá mnohé z toho, co jste se naučili už dříve. Umožňuje spočítat obsah kruhu. Cyklus while
má místo podmínky dosazený program, který navrací pravdivostní hodnotu 1 nebo true
(pravda). To znamená, že cyklus se bude opakovat, dokud uživatel násilně neukončí skript pomocí [Ctrl+C]
.
Dosavadních znalostí můžete využít i pro vytvoření lepšího řešení:
#!/bin/bash function obsah { echo -n "Obsah kruhu s polomerem $1 je " echo "scale=3; 3.14*$1^2" | bc } if [ -z "$1" ]; then while true; do echo -n "Zadejte polomer (Ctrl-C ukonci skript): " read POLOMER obsah $POLOMER done else obsah "$1" fi
Tento skript využívá funkci, která provádí vlastní výpočet, dále podmínku, která hlídá, zda-li uživatel zadal skriptu při spuštění parametr nebo ne. Pokud ano, provede výpočet na hodnotě získané z parametru, pokud uživatel parametr nezadal, nabídne mu „interaktivní“ režim, kdy může hodnotu zadat sám. Interaktivní režim pak pracuje stejně jako příklad výše.