A veces tienes que hacer algo funky. Digamos que desea leer desde un comando (el ejemplo de fecha de SDGuero, por ejemplo) pero desea evitar múltiples bifurcaciones.
read month day year << DATE_COMMAND
$(date "+%m %d %Y")
DATE_COMMAND
echo $month $day $year
También podría canalizar el comando de lectura, pero luego tendría que usar las variables dentro de una subcapa:
day=n/a; month=n/a; year=n/a
date "+%d %m %Y" | { read day month year ; echo $day $month $year; }
echo $day $month $year
da como resultado...
13 08 2013
n/a n/a n/a
Lo primero que se me ocurre:
read -r a b c <<<$(echo 1 2 3) ; echo "$a|$b|$c"
la salida es, como era de esperar
1|2|3
Quería asignar los valores a una matriz. Entonces, ampliando el enfoque de Michael Krelin, hice lo siguiente:
read a[{1..3}] <<< $(echo 2 4 6); echo "${a[1]}|${a[2]}|${a[3]}"
que produce:
2|4|6
como se esperaba.
Creo que esto podría ayudar...
Para desglosar las fechas ingresadas por el usuario (mm/dd/aaaa) en mis scripts, almaceno el día, el mes y el año en una matriz y luego coloco los valores en variables separadas de la siguiente manera:
DATE_ARRAY=(`echo $2 | sed -e 's/\// /g'`)
MONTH=(`echo ${DATE_ARRAY[0]}`)
DAY=(`echo ${DATE_ARRAY[1]}`)
YEAR=(`echo ${DATE_ARRAY[2]}`)