Saya memiliki skrip berikut:
#!/bin/bash
function consoleWriteLine() {
echo $* >&2
}
consoleWriteLine " indented by 4 spaces"
Ketika saya menjalankannya, saya mendapatkan output berikut:
$ ./test.sh
indented by 4 spaces
Ke mana 4 spasi saya pergi? Dan bagaimana saya mendapatkannya kembali?
consoleWriteLine
. Kali kedua adalahecho
'd, spasi putih perlu dipertahankan lagi dengan kutipan tambahan. Saya tidak akan pernah menduga bahwa Anda dapat menempatkan tanda kutip di sekitar$*
.$*
, varian$@
ini secara khusus dibuat untuk berkembang menjadi kata-kata yang terpisah ketika dikutip:"$@"
dapat berupa beberapa argumen,"$*"
selalu hanya satu.echo
adalah salah satu dari sedikit perintah yang tidak ada bedanya.Punya masalah ini sendiri,
Per blog ini Anda perlu mengubah IFS karena secara default berisi ruang putih dan melihat "xxx yyy zzzz" sebagai 3 string dengan ruang putih di antara mereka.
IFS='\n'
sebelum perintah akan memperbaikinya, dan unset IFS untuk menghapus perubahan
unset IFS
sumber