GNU/Linux >> Belajar Linux >  >> Linux

Baca nilai ke dalam variabel shell dari pipa

Ini adalah opsi lain

$ read test < <(echo hello world)

$ echo $test
hello world

jika Anda ingin membaca banyak data dan mengerjakan setiap baris secara terpisah, Anda dapat menggunakan sesuatu seperti ini:

cat myFile | while read x ; do echo $x ; done

jika Anda ingin membagi baris menjadi beberapa kata, Anda dapat menggunakan beberapa variabel sebagai pengganti x seperti ini:

cat myFile | while read x y ; do echo $y $x ; done

sebagai alternatif:

while read x y ; do echo $y $x ; done < myFile

Namun begitu Anda mulai ingin melakukan sesuatu yang sangat pintar dengan hal semacam ini, lebih baik Anda menggunakan beberapa bahasa scripting seperti perl di mana Anda dapat mencoba sesuatu seperti ini:

perl -ane 'print "$F[0]\n"' < myFile

Ada kurva belajar yang cukup curam dengan perl (atau saya kira salah satu dari bahasa ini) tetapi Anda akan merasa jauh lebih mudah dalam jangka panjang jika Anda ingin melakukan apa pun selain skrip yang paling sederhana. Saya akan merekomendasikan Perl Cookbook dan, tentu saja, The Perl Programming Language oleh Larry Wall et al.


Gunakan

IFS= read var << EOF
$(foo)
EOF

Anda bisa trik read untuk menerima dari pipa seperti ini:

echo "hello world" | { read test; echo test=$test; }

atau bahkan tulis fungsi seperti ini:

read_from_pipe() { read "[email protected]" <&0; }

Tapi tidak ada gunanya - tugas variabel Anda mungkin tidak bertahan lama! Sebuah pipa mungkin menelurkan subkulit, di mana lingkungan diwariskan berdasarkan nilai, bukan referensi. Inilah mengapa read tidak peduli dengan input dari pipa - tidak terdefinisi.

FYI, http://www.etalabs.net/sh_tricks.html adalah koleksi bagus dari cruft yang diperlukan untuk melawan keanehan dan ketidakcocokan cangkang bourne, sh.


Linux
  1. Linux bash:Penetapan variabel berganda

  2. Pipa string ke Tanggal GNU untuk konversi - bagaimana cara membuatnya dibaca dari stdin?

  3. Semua baris baru dihapus saat menyimpan keluaran kucing ke dalam variabel

  1. Transformasi Otomatis Baris Baru Dalam Penugasan Variabel Shell?

  2. Cakupan variabel untuk skrip bash shell dan fungsi dalam skrip

  3. Bagaimana cara mempertahankan jeda baris saat menyimpan keluaran perintah ke variabel?

  1. Loop Mengabaikan Perubahan Variabel Dari Subkulit Di Latar Belakang?

  2. Bagaimana Cara Memasukkan Data Csv Ke Tabel Sqlite Melalui Pipa Shell?

  3. Baca File Ke Array?