Berikut adalah rangkaian kasus yang echo $var
dapat menunjukkan nilai yang berbeda dari yang baru saja ditetapkan. Ini terjadi terlepas dari apakah nilai yang ditetapkan adalah "dikutip ganda", 'dikutip tunggal', atau tidak dikutip.
Bagaimana cara mendapatkan shell untuk mengatur variabel saya dengan benar?
Tanda bintang
Output yang diharapkan adalah /* Foobar is free software */
, tetapi saya mendapatkan daftar nama file:
$ var="/* Foobar is free software */"
$ echo $var
/bin /boot /dev /etc /home /initrd.img /lib /lib64 /media /mnt /opt /proc ...
Tanda kurung siku
Nilai yang diharapkan adalah [a-z]
, tetapi terkadang saya mendapatkan satu huruf saja!
$ var=[a-z]
$ echo $var
c
Feed baris (baris baru)
Nilai yang diharapkan adalah daftar baris terpisah, tetapi sebaliknya semua nilai berada dalam satu baris!
$ cat file
foo
bar
baz
$ var=$(cat file)
$ echo $var
foo bar baz
Banyak spasi
Saya mengharapkan tajuk tabel yang disejajarkan dengan hati-hati, tetapi sebaliknya beberapa spasi hilang atau diciutkan menjadi satu!
$ var=" title | count"
$ echo $var
title | count
Tab
Saya mengharapkan dua nilai yang dipisahkan tab, tetapi saya mendapatkan dua nilai yang dipisahkan spasi!
$ var=$'key\tvalue'
$ echo $var
key value
var=$(cat file)
baik-baik saja, tetapiecho "$var"
dibutuhkan.