最佳答案
下面是一系列的例子,在这些例子中,echo $var
可以显示与刚才分配的值不同的值。无论分配的值是“双引号”、“单引号”还是未引号,都会发生这种情况。
如何让 shell 正确设置变量?
星号
预期的输出是 /* Foobar is free software */
,但是我得到了一个文件名列表:
$ var="/* Foobar is free software */"
$ echo $var
/bin /boot /dev /etc /home /initrd.img /lib /lib64 /media /mnt /opt /proc ...
方括号
期望值是 [a-z]
,但有时我得到一个单一的字母代替!
$ var=[a-z]
$ echo $var
c
换行(换行)
期望值是一个单独行的列表,但是所有的值都在一行上!
$ cat file
foo
bar
baz
$ var=$(cat file)
$ echo $var
foo bar baz
多个空格
我期望的是一个仔细对齐的表头,但是相反,多个空格要么消失,要么折叠成一个!
$ var=" title | count"
$ echo $var
title | count
标签
我以为会有两个制表符分隔的值,结果却得到了两个空格分隔的值!
$ var=$'key\tvalue'
$ echo $var
key value