Parametry skriptů a uživatelský vstup

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.

Kam dál

pokrocili/komandlajna/parametry_uzivatel.txt · Poslední úprava: 2009/11/12 20:44 autor: Michal Dočekal
CC Attribution-Share Alike 3.0
www.chimeric.de Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 PDF Export