这是一系列情况,它们echo $var
可能显示出与刚刚分配的值不同的值。无论分配的值是“双引号”,“单引号”还是未引号,都会发生这种情况。
如何使外壳正确设置变量?
星号
预期的输出是/* 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
var=$(cat file)
是好的,但echo "$var"
需要。