GNU/Linux >> Belajar Linux >  >> Linux

Saat mengatur IFS untuk dibagi pada baris baru, mengapa perlu menyertakan backspace?

Karena seperti yang dikatakan manual bash tentang substitusi perintah:

Bash melakukan perluasan dengan menjalankan perintah dan mengganti substitusi perintah dengan output standar dari perintah, dengan setiap baris baru yang tertinggal dihapus.

Jadi, dengan menambahkan \b Anda mencegah penghapusan \n .

Cara yang lebih bersih untuk melakukannya adalah dengan menggunakan $'' mengutip, seperti ini:

IFS=$'\n'

Saya baru ingat cara termudah. ​​Diuji dengan bash di debian wheezy.

IFS="
"

jangan bercanda :)


Ini peretasan karena penggunaan echo dan substitusi perintah.

prompt> x=$(echo -en "\n")
prompt> echo ${#x}
0
prompt> x=$(echo -en "\n\b")
prompt> echo ${#x}
2

$() strip mengikuti baris baru dan \b mencegah \n dari menjadi baris baru yang tertinggal sementara sangat tidak mungkin muncul di teks apa pun. IFS=$'\n' adalah cara yang lebih baik untuk menyetel IFS agar terbagi pada baris baru.


Linux
  1. Kapan Mengutip Ganda Diperlukan?

  2. Mengapa Printf Lebih Baik Dari Echo?

  3. Mengapa Pelengkapan Otomatis Tidak Berfungsi Saat Mengetik Nama Perintah Setelah `sumber`?

  1. Perintah gema Linux

  2. Mengapa sudo:perintah bundel tidak ditemukan?

  3. Bagaimana cara membagi string dengan tanda kutip (seperti argumen perintah) di bash?

  1. Mengapa Mengatur Variabel Sebelum Perintah Legal Di Bash?

  2. Mengapa menggunakan gema sebelum menginstal perangkat lunak baru?

  3. Mengapa slabtop -o hanya mengembalikan 23 baris pertama saat perintah disalurkan?