read (Unix)

read je základním programem/příkazem v bash, který přečte řádek ze standardního vstupu (nebo ze souboru), rozdělí textový řetězec na části a ty přiřadí do definovaných proměnných.[1] Jako standardní vstup se často využívá přímé zadávání textu z klávesnice.

Popis

read [options] [name ...]

[name ...] definuje jeden nebo více názvů proměnných oddělených mezerou, do kterých je uložen text ze standardního vstupu. Jestliže je definována více než jedna proměnná, je textový řetězec rozdělen na stejný počet částí. V základním nastavení jako oddělovač fungují znaky patřící mezi IFS (Input Field Separator), tj. mezera, tabulátor a nový řádek. Bude-li na vstupu zadáno více slov než je počet proměnných, dosadí se do poslední z nich všechna zbývající slova včetně oddělovačů. Je-li naopak v řádku slov méně, jsou zbývající proměnné naplněny prázdným řetězcem (nulový znak).[2] Když není zadán žádný parametr [name] použije se jako výchozí proměnná REPLY. [3] Příkaz je opakem k příkazům echo a printf [4].

Příklady použití

Jednoduchým příkladem použití programu read, může být zadání proměnných var1 a var2, kdy po potvrzení je uživatelem zadán vstup: "Hello, world!".

read var1 var2
Hello, World!

Každé slovo je předáno programu read jako argument, který může být ověřen příkazem echo nebo printf.[2]

echo $var1
Hello,
echo $var2
World!

Čtení ze souboru

Čtení ze souboru pomocí příkazu read je možné tehdy, když se soubor přesměruje na standardní vstup.

read x y < soubor.txt

Pokud chceme přečíst všechny řádky souboru je nutné vytvořit while cyklus[5].

while IFS=: read x _ y _; do
    printf "%s -- %s\n" "$x" "$y"
done < /etc/passwd

Přepínače

read -r

Slouží k nastavení znaku "\" (zpětné lomítko), které je normálně považováno za escapující znak. S příkazem read je to bráno pouze jako znak "\".[6]

read -n x

nečte řádek, ale jen x znaků. Využívá se to pro zadávání hodnot přesné délky nebo počet stisků klávesy (read -r 1).

read -s

zadávané znaky nebudou zobrazovány. Využívá se to při zadávání hesel nebo důvěrných údajů.

read -t sekundy

příkaz čeká na vstup z klávesnice jen stanovený počet sekund.[1]

Reference

  1. a b Bash 14: Interaktivní skripty: read - Linux E X P R E S. www.linuxexpres.cz [online]. [cit. 2022-07-19]. Dostupné online. 
  2. a b Bash read Command. linuxize.com [online]. 2020-12-29 [cit. 2022-07-18]. Dostupné online. (anglicky) 
  3. read Command. www.ibm.com [online]. [cit. 2022-07-18]. Dostupné online. (anglicky) 
  4. Bash Guide for Beginners. tldp.org [online]. [cit. 2022-07-18]. Dostupné online. 
  5. Honza „Stínovlas“ Musílek. kam.mff.cuni.cz [online]. [cit. 2022-07-19]. Dostupné v archivu pořízeném z originálu dne 2021-01-15. 
  6. Unixové nástroje – 15 (basename/dirname, test, read). www.abclinuxu.cz [online]. [cit. 2022-07-19]. Dostupné online. 

Související články

Externí odkazy