我刚刚分配了一个变量,但echo $ variable显示了其他内容

我刚刚分配了一个变量,但echo $ variable显示了其他内容

以下是一系列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


翻翻过去那场雪
浏览 1477回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP