Terkadang Anda harus melakukan sesuatu yang funky. Katakanlah Anda ingin membaca dari sebuah perintah (contoh tanggal oleh SDGuero misalnya) tetapi Anda ingin menghindari banyak percabangan.
read month day year << DATE_COMMAND
$(date "+%m %d %Y")
DATE_COMMAND
echo $month $day $year
Anda juga bisa menyalurkan ke perintah baca, tetapi kemudian Anda harus menggunakan variabel di dalam subkulit:
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
menghasilkan...
13 08 2013
n/a n/a n/a
Hal pertama yang terlintas di benak saya:
read -r a b c <<<$(echo 1 2 3) ; echo "$a|$b|$c"
hasilnya, tidak mengherankan
1|2|3
Saya ingin menetapkan nilai ke array. Jadi, memperluas pendekatan Michael Krelin, saya melakukan:
read a[{1..3}] <<< $(echo 2 4 6); echo "${a[1]}|${a[2]}|${a[3]}"
yang menghasilkan:
2|4|6
seperti yang diharapkan.
Saya pikir ini mungkin membantu...
Untuk memecah tanggal yang dimasukkan pengguna (mm/dd/yyyy) di skrip saya, saya menyimpan hari, bulan, dan tahun ke dalam array, dan kemudian memasukkan nilai ke dalam variabel terpisah sebagai berikut:
DATE_ARRAY=(`echo $2 | sed -e 's/\// /g'`)
MONTH=(`echo ${DATE_ARRAY[0]}`)
DAY=(`echo ${DATE_ARRAY[1]}`)
YEAR=(`echo ${DATE_ARRAY[2]}`)