Itu harfiah, {fd}bukan pengganti. Saya memiliki skrip yang melakukan ini, dan tidak sumber dalam apa pun, juga tidak referensi {fd} di tempat lain. Apakah ini bash yang valid?
exec {fd}</dev/watchdog
Itu harfiah, {fd}bukan pengganti. Saya memiliki skrip yang melakukan ini, dan tidak sumber dalam apa pun, juga tidak referensi {fd} di tempat lain. Apakah ini bash yang valid?
exec {fd}</dev/watchdog
Jawaban:
Daripada harus memilih deskriptor file dan berharap itu tersedia:
exec 4< /dev/watchdog # Was 4 in use? Who knows?
notasi ini meminta shell untuk memilih deskriptor file yang saat ini tidak digunakan, buka file untuk membaca deskriptor itu, dan menetapkan nomor ke variabel yang diberikan ( fd).
$ exec {fd}< /dev/watchdog
$ echo $fd
10
REDIRECTIONS. Itu tidak benar-benar melompat pada Anda, karena mereka tidak memberikan contoh eksplisit.
/dev/watchdogjuga tidak ada di Mac OS X; ini adalah perangkat khusus Linux.
Formulir:
{var}<filename
membuat file shell terbuka filenameuntuk membaca dan menyimpan nomor deskriptor file dalam variabel var. Tidak ada ruang yang diizinkan antara {var}dan operator pengalihan, dan nomor deskriptor file akan lebih besar atau sama 10.
Fitur ini asli dari ksh(dari versi ksh93r pada tahun 2006), bashdisalin jauh kemudian bash-4.1-alphadari tahun 2010. zshJuga membuat perubahan lebih awal bashdari zsh 4.3.4pada tahun 2007.
Ini dijelaskan di bagian manual Bash tentang Pengalihan .
Setiap pengalihan yang dapat didahului dengan nomor deskriptor file sebaliknya dapat didahului oleh kata dari bentuk { varname }. Dalam hal ini, untuk setiap operator redirection kecuali
>&-dan<&-, shell akan mengalokasikan deskriptor file lebih besar dari 10 dan menetapkannya ke { varname }. Jika>&-atau<&-didahului oleh { varname }, nilai varname mendefinisikan deskriptor file untuk ditutup.