Setel IFS ke baris baru, seperti ini:
IFS='
'
for x in `ls -l $1`; do echo $x; done
Letakkan sub-kulit di sekitarnya jika Anda tidak ingin menyetel IFS secara permanen:
(IFS='
'
for x in `ls -l $1`; do echo $x; done)
Atau gunakan while | baca sebagai gantinya:
ls -l $1 | while read x; do echo $x; done
Satu opsi lagi, yang menjalankan while/read pada level shell yang sama:
while read x; do echo $x; done << EOF
$(ls -l $1)
EOF
Seperti yang telah disebutkan, awk adalah alat yang tepat untuk ini. Jika Anda tidak ingin menggunakan awk, alih-alih mem-parsing output "ls -l" baris demi baris, Anda dapat mengulangi semua file dan melakukan "ls -l" untuk setiap file seperti ini:
for x in * ; do echo `ls -ld $x` ; done
Itu tergantung apa yang ingin Anda lakukan dengan setiap baris. awk adalah utilitas yang berguna untuk jenis pemrosesan ini. Contoh:
ls -l | awk '{print $9, $5}'
.. di sistem saya mencetak nama dan ukuran setiap item di direktori.
Ketika assert() gagal, apa kode keluar programnya?
Bagaimana saya bisa menautkan ke versi glibc tertentu?