一个关于unix系统中变量替换的问题

一个关于unix系统中变量替换的问题

hello="A B  C   D"
echo $hello   #显示为A B C D
echo "$hello"  #显示为A B  C   D
谁能帮我解释一下啊!实在是困惑!
我使用
hello='A B  C   D'
结果也是一样!      
顶起来请大家指教哦      
[QUOTE]最初由 levent 发布
[B]hello="A B  C   D"
echo $hello   #显示为A B C D
echo "$hello"  #显示为A B  C   D
谁能帮我解释一下啊!实在是困惑!
我使用
hello='A B  C   D'
结果也是一样! [/B][/QUOTE]
如果你的变量中含有空格制表符和换行符号的话就需要用单/双引号括起来,如果你的变量中有还有别的变量,就需要用双引号括起来,如果只是单纯的字符串,那么就不需要任何单/双引号
这是shell的硬性规定!      
还是不太明白哦
为何echo 'a b  c   d'就可以显示为 a b  c   d
而hello='a b  c   d'就显示为 a b  c   d呢      
觉得奇怪? 强烈建议回去仔细阅读 bash 中关于 shell expansion 的说明      
还有 "奇怪" 的:
$ cd /
$ echo *
$ ls *
(结果跟你想像的一样吗?)      
[QUOTE]最初由 dearvoid 发布
[B]还有 "奇怪" 的:
$ cd /
$ echo *
$ ls *
(结果跟你想像的一样吗?) [/B][/QUOTE]
;)