分页: 1 / 1
有人能帮我一下么?关于echo输出时,双引号问题
发表于 : 2010-01-10 17:41
由 if0else1
有人能帮我一下么?shell的问题! 在echo的时候,什么时候应该加"",什么时候可以不加呢?标准是什么?为什么不加“”一样能输出字符串比如:echo "name is:"$name
echo "name is:$name" 也一样能正常显示。。。Shell不是那么严谨么?
是否在输出变量时候需要将变量放在引号外面?还是不需要……
标准的是怎么个写法呢?

Re: 有人能帮我一下么?关于echo输出时,双引号问题
发表于 : 2010-01-10 17:53
由 ebok
请看《advanced bash scripting guide》
Re: 有人能帮我一下么?关于echo输出时,双引号问题
发表于 : 2010-01-11 15:21
由 billbear
代码: 全选
billbear@ubuntu-pc:~$ a=*
billbear@ubuntu-pc:~$ echo $a
Desktop Documents Downloads Music Pictures Public Templates Videos
billbear@ubuntu-pc:~$ echo '$a'
$a
billbear@ubuntu-pc:~$ echo "$a"
*
billbear@ubuntu-pc:~$
Re: 有人能帮我一下么?关于echo输出时,双引号问题
发表于 : 2010-01-11 16:09
由 if0else1
if0else1@I0E1:~$ a="123"
if0else1@I0E1:~$ echo $a
123
if0else1@I0E1:~$ echo "$a"
123
总是觉得shell的输出怪怪的!
可以加引号也可以不加引号。。。这可能和习惯有联系
单引号是原样输出,这个已经了解,呵呵,谢谢楼上阿
Re: 有人能帮我一下么?关于echo输出时,双引号问题
发表于 : 2010-01-11 21:11
由 xzap
标准解释双引号就是
“为了包含文字或者函数段. 除了本身,反引号内的函数,$开头的变量和\开头反转换的字符外, 其余都是直接输出.”
用一个echo体现不出什么的。但是echo加双引号至少可以这样用可以输出换行什么的特殊字符。
代码: 全选
echo "dsdd
asdasds
asdas
asd"
还有就是在用管道的时候有什么有一些特殊字符,空格什么的,双引号也是必须的。
比如
代码: 全选
i="123 123"
echo $i
#显示的是 123 123
echo "$i"
#显示的是 123 123 这个就比较正确了
echo $i|wc
# 1 2 8
echo "$i"|wc
# 1 2 11
发现自己真无聊,呵呵。至于具体什么时候该用"",什么时候可以不用,我建议尽量多用""。除非像3楼这样的特殊情况。打两个分号很简单的,但是可以避免很多的问题。比如压缩空格这样的小问题。有的时候在脚本里出错了,还不知道哪里出错了。
随便说些一些不成熟的看法。
Re: 有人能帮我一下么?关于echo输出时,双引号问题
发表于 : 2010-01-18 21:14
由 王老五
给你举个例子,列举一下本机的USB,然后给变量test,然后使用echo显示变量,你会发现,带不带双引号的区别了。
代码: 全选
@ubuntu:~$ test=`lsusb`
@ubuntu:~$
@ubuntu:~$ echo $test
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 002: ID 0ac8:301b Z-Star Microelectronics Corp. ZC0301 Webcam Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 002 Device 002: ID 04f2:0210 Chicony Electronics Co., Ltd Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
@ubuntu:~$
@ubuntu:~$
@ubuntu:~$ echo "$test"
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 002: ID 0ac8:301b Z-Star Microelectronics Corp. ZC0301 Webcam
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 04f2:0210 Chicony Electronics Co., Ltd
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
@ubuntu