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 druhyhello world$echo $prvnihello$echo $druhyworld$
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 restNAME: radek$echo "$name='$value'", $restNAME='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.
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))
HEREread A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr))