Saya mengalami masalah menarik ini saat mengisi bilah WM saya dengan teks info, yang diterapkan dengan mengatur judul jendela root, yaitu xsetroot -name "clever words"
Untuk tujuan ini, mencetak keberuntungan bekerja dengan baik di terminal:
fortune -s | while read -r; do xsetroot -name "$REPLY"; done
Namun hal yang sama gagal ketika dijalankan dari skrip shell:
#!/bin/sh
cat /tmp/afile | while read; do echo "$REPLY"; done
Menghasilkan:
$ sh afilereader
afilereader: 2: baca: arg count
Tentu saja ini diatasi dengan menetapkan hasil keberuntungan kami ke suatu variabel, kemudian menggunakan xsetroot dengan variabel tersebut. Tapi saya masih ingin mengerti mengapa ini tidak berhasil dalam naskah.
Saya menyadari bahwa setiap perintah di kedua sisi pipeline dijalankan di dalam subshell itu sendiri, tetapi gagal untuk melihat bagaimana variabel lokal mereka dapat mempengaruhi loop saat membaca. Atau apakah variabel berada di luar cakupan bahkan di antara iterasi loop?
Apa yang saya lewatkan?
Update: The sh
I digunakan terkait dengan dasbor, yang dalam proses yang dibuat POSIX compliant. Menggunakan yang lebih terhormat bash
memecahkan ini.
read
invocable tanpa variabel: pubs.opengroup.org/onlinepubs/9699919799/utilities/read.html