60.4. Čtení vstupu

Pro čtení ze vstupu má bash příkaz read. Tento nám dovoluje přečíst údaje ze vstupního proudu (stdin) a načíst je do proměnných bashe. Jeho základní použití je:

$ read prvni druhy
hello world
$ echo $prvni
hello
$ echo $druhy
world
$

Jak je na uvedeném příkladu vidět, použití read je jednoduché, příkaz přečte „větu“ ze standardního vstupu (stdin) a rozdělí ji podle oddělovače do jednotlivých proměnných.

Oddělovač je znak, nebo množina znaků, které oddělují jednotlivá pole vstupní věty. Jako standardní oddělovač používá read znaky mezera, tabulátor a znak konce řádku. Pokud chceme použít jiný, sdělíme to příkazu read nastavením proměnné IFS.

$ IFS=" :=\t" read name value rest
NAME: radek
$ echo "$name='$value'", $rest
NAME='radek'

Proměnná IFS má na rozdělování věty na slova (parsing) složitější vliv. Algoritmus rozdělování se chová jinak k regulérním znakům, jako jsou v našem případě ":" a "=" a jinak k bílým znakům jako je mezera " ", tabulátor "\t" a znak konce řádku "\n". Vyzkoušejte si různé kombinace znaků v IFS a experimentujte i se vstupy. Další informace k rozdělování vstupní věty najdete v části "Word Splitting" manuálové stránky programu bash.

60.4.1. Příklady

Různé příklady.

Následující dva příklady jsem objevil na http://www.unixguide.net/unix/bash/E4.shtml.

read A B C D << HERE
    $(IFS=.; echo $(/usr/local/bin/ipaddr))
HERE
read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr))