Saya telah diberitahu bahwa spasi penting dalam bash
skrip shell lain dan saya tidak boleh mengubah keberadaan ruang kecuali saya tahu apa yang saya lakukan. Dengan "mengubah keberadaan" maksud saya menyisipkan spasi antara dua karakter non-spasi atau menghapus spasi antara dua karakter non-spasi, misalnya mengubah var="$val"
ke var ="$val"
atau sebaliknya. saya ingin bertanya
Apakah ada kasus di mana menggunakan spasi tunggal atau menggunakan beberapa ruang berurutan dalam skrip shell membuat perbedaan? .
(Tentu saja, memasukkan / menghapus spasi dalam tanda kutip membuat perbedaan, seperti mengubah dari echo "a b"
menjadi echo "a b"
atau sebaliknya. Saya mencari contoh selain contoh sepele ini.)
Saya telah menemukan pertanyaan ini tetapi yang satu adalah tentang menambah dan menghapus spasi antara dua karakter non-spasi yang saya tahu banyak contoh bahwa itu akan membuat perbedaan.
Bantuan apa pun akan dihargai. Sertakan lebih banyak varietas kerang jika memungkinkan.
sumber
echo
perintah dengan banyak spasi putih antara perintah dan argumen.Ini mungkin curang, tetapi ini:
berbeda dari ini:
meskipun spasi tidak ada dalam tanda kutip. ;-)
Lebih membingungkan lagi, ini:
berbeda dari ini:
meskipun mereka terlihat identik!
sumber
Jika kita tidak berbicara tentang karakter spasi (
U+0020
), tapi setiap karakter spasi (U+0020
,\n
,\t
, dll), maka salah satu kasus tertentu datang ke pikiran saya: Berikut-Dokumen.Kode ini (menggunakan spasi):
Akan dicetak:
Tetapi kode ini (menggunakan tab):
Akan dicetak:
Itu karena ( seperti yang dinyatakan POSIX ):
sumber
<<-
operator. Terima kasih banyak.Ini juga memiliki efek ketika menulis pernyataan tugas. Seperti jika saya katakan
FOO=xyz
itu akan membuat variabel lingkungan bernamaFOO
dengan nilaixyz
, tetapi jika saya memisahkan yang sama dengan spasi, ia akan berpikir bahwa saya sedang menjalankan program bernamaFOO
dengan arg=xyz
. Jadi itu penting ketika datang ke sintaksis tertentu.sumber
FOO=xyz
membuat variabel shell internal tetapi bukan variabel lingkungan. Anda perluset -a
atauexport FOO=xyz
untuk itu (yaitu menjadikannya bagian dari lingkungan sub-proses non-subkulit).