Parfois, vous devez faire quelque chose de funky. Disons que vous voulez lire à partir d'une commande (l'exemple de date par SDGuero par exemple) mais que vous voulez éviter plusieurs fourches.
read month day year << DATE_COMMAND
$(date "+%m %d %Y")
DATE_COMMAND
echo $month $day $year
Vous pouvez également diriger la commande read, mais vous devrez alors utiliser les variables dans un sous-shell :
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
aboutit à...
13 08 2013
n/a n/a n/a
Première chose qui me vient à l'esprit :
read -r a b c <<<$(echo 1 2 3) ; echo "$a|$b|$c"
la sortie est, sans surprise
1|2|3
Je voulais attribuer les valeurs à un tableau. Donc, prolongeant l'approche de Michael Krelin, j'ai fait :
read a[{1..3}] <<< $(echo 2 4 6); echo "${a[1]}|${a[2]}|${a[3]}"
ce qui donne :
2|4|6
comme prévu.
Je pense que cela pourrait aider...
Afin de décomposer les dates saisies par l'utilisateur (mm/jj/aaaa) dans mes scripts, je stocke le jour, le mois et l'année dans un tableau, puis je place les valeurs dans des variables distinctes comme suit :
DATE_ARRAY=(`echo $2 | sed -e 's/\// /g'`)
MONTH=(`echo ${DATE_ARRAY[0]}`)
DAY=(`echo ${DATE_ARRAY[1]}`)
YEAR=(`echo ${DATE_ARRAY[2]}`)