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
- ↑ a b Bash 14: Interaktivní skripty: read - Linux E X P R E S. www.linuxexpres.cz [online]. [cit. 2022-07-19]. Dostupné online.
- ↑ a b Bash read Command. linuxize.com [online]. 2020-12-29 [cit. 2022-07-18]. Dostupné online. (anglicky)
- ↑ read Command. www.ibm.com [online]. [cit. 2022-07-18]. Dostupné online. (anglicky)
- ↑ Bash Guide for Beginners. tldp.org [online]. [cit. 2022-07-18]. Dostupné online.
- ↑ 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.
- ↑ Unixové nástroje – 15 (basename/dirname, test, read). www.abclinuxu.cz [online]. [cit. 2022-07-19]. Dostupné online.
Související články
Externí odkazy
- https://www.abclinuxu.cz/clanky/ internetový zdroj ABC/Linux
- učebnice ABC/Linux
- Chování procedur
Read
aReadLn
podrobnější popisRead
a jeho verzeReadLn