Saya baru saja menemukan beberapa jawaban seperti menguraikan file teks yang dibatasi… yang menggunakan konstruksi:
while IFS=, read xx yy zz;do
echo $xx $yy $zz
done < input_file
di mana IFS
variabel diatur sebelum read
perintah.
Saya telah membaca referensi bash tetapi tidak tahu mengapa ini legal.
Saya mencoba
$ x="once upon" y="a time" echo $x $y
dari bash command Prompt tetapi tidak ada yang bergema. Dapatkah seseorang mengarahkan saya ke tempat sintaks itu didefinisikan dalam referensi yang memungkinkan variabel IFS diatur dengan cara itu? Apakah ini kasus khusus atau dapatkah saya melakukan hal serupa dengan variabel lain?
Jawaban yang Diterima:
Informasi yang relevan dapat ditemukan di halaman manual yang disediakan oleh pengelola BASH (terakhir diperiksa Agustus 2020). Bagian Tata Bahasa Shell, Perintah Sederhana menyatakan (penekanan ditambahkan):
Perintah sederhana adalah urutan penetapan variabel opsional diikuti dengan kata dan pengalihan yang dipisahkan kosong , dan diakhiri oleh operator kontrol. Kata pertama menentukan perintah yang akan dieksekusi, dan diteruskan sebagai argumen nol. Kata-kata yang tersisa dilewatkan sebagai argumen untuk perintah yang dipanggil.
Jadi Anda dapat meneruskan variabel apa pun yang Anda inginkan. echo
. Anda contoh tidak berfungsi karena variabel diteruskan ke perintah, tidak disetel di Shell. Shell memperluas $x
dan $y
sebelum memanggil perintah. Ini berfungsi, misalnya:
$ x="once upon" y="a time" bash -c 'echo $x $y'
once upon a time