Output dari perintah di bawah ini aneh bagi saya. Mengapa itu tidak memberi saya kembali elemen 5?
$ echo '0,1,2,3,4,5' | while read -d, i; do echo $i; done
0
1
2
3
4
Saya harapkan '5' akan dikembalikan juga. Lari GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)
. Menambahkan koma berfungsi, tetapi data input saya tidak memiliki koma. Apakah saya melewatkan sesuatu?
sumber
read -d, i || [[ -n $i ]]
a la Apawhile read -r line || [[ -n $line ]]
artinya?Sebagai jawaban lainnya menyatakan,
-d
adalah karakter end-of-line, bukan pemisah bidang. Anda dapat melakukansumber
Dari manusia:
Elemen 5 Anda tidak memiliki pembatas (koma), sehingga tidak akan dibaca.
sumber
Apa yang Anda lihat adalah perilaku yang sama (dan untuk alasan yang sama) seperti Mengapa loop 'sementara' ini tidak mengenali baris terakhir?
Seperti dalam kasus itu, Anda dapat memodifikasi perilaku dengan menambahkan tes tambahan ke kondisi terminasi loop, sebagai berikut
Ex.
sumber