Saya pada dasarnya mencoba untuk mengasumsikan bagian-bagian tertentu dari output dari perintah shell ke variabel mulitple, tapi saya tidak tahu bagaimana melakukannya.
Demi kesederhanaan, asumsikan bahwa perintah pada shell, ketika dijalankan, dicetak
one two three four
yang dapat disimulasikan dengan a
echo "one two three four"
(walaupun comannd yang sebenarnya berbeda)
Sekarang, saya ingin menetapkan kata kedua dan keempat dari keluaran (dalam hal ini dua dan empat ) ke variabel w1 dan w2 .
Saya pikir saya bisa menggunakan perintah baca seperti ini:
echo "one two three four" | awk '{print $2 " " $4}' | read w1 w2
tetapi ini tidak berhasil, mungkin karena perintah baca dijalankan dalam sub-proses.
Jadi, bagaimana saya akan mencapai apa yang saya inginkan?
Jawaban:
Ini tidak berhasil karena
read
berjalan dalam proses anak yang tidak dapat mempengaruhi lingkungan orang tua.Anda punya beberapa pilihan:
Anda dapat mengonversi perintah Anda ke:
Atau, ubah IFS dan gunakan
set
:atau String Di Sini:
sumber
<<< Here String
read -r
::do not allow backslashes to escape any characters