Občas musíte udělat něco funky. Řekněme, že chcete číst z příkazu (příklad data od SDGuero), ale chcete se vyhnout vícenásobnému rozvětvení.
read month day year << DATE_COMMAND
$(date "+%m %d %Y")
DATE_COMMAND
echo $month $day $year
Můžete také zadat příkaz read, ale pak byste museli použít proměnné v podshellu:
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
výsledkem je...
13 08 2013
n/a n/a n/a
První věc, která mě napadne:
read -r a b c <<<$(echo 1 2 3) ; echo "$a|$b|$c"
výstup je nepřekvapivě
1|2|3
Chtěl jsem přiřadit hodnoty do pole. Takže jsem rozšířil přístup Michaela Krelina:
read a[{1..3}] <<< $(echo 2 4 6); echo "${a[1]}|${a[2]}|${a[3]}"
což dává:
2|4|6
podle očekávání.
Myslím, že by to mohlo pomoci...
Abych v mých skriptech rozdělil data zadaná uživatelem (mm/dd/rrrr), uložil jsem den, měsíc a rok do pole a poté vložil hodnoty do samostatných proměnných následovně:
DATE_ARRAY=(`echo $2 | sed -e 's/\// /g'`)
MONTH=(`echo ${DATE_ARRAY[0]}`)
DAY=(`echo ${DATE_ARRAY[1]}`)
YEAR=(`echo ${DATE_ARRAY[2]}`)
Problémy s WinSCP se stylem konce řádku na Ubuntu Linux při použití rozdílu SVN
Jak mohu symbolicky propojit soubor v Linuxu?