当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 9 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 关于反引号或$()代换操作,在此请教...
帖子发表于 : 2009-10-03 21:58 
头像

注册: 2009-05-20 21:43
帖子: 735
送出感谢: 2
接收感谢: 2
请先看我的操作:
<一>
代码:
cd ~
ls > tmp/'test(ls)'

生成的文件test(ls)内容如下:
引用:
bin
date
Desktop
documents
Downloads
examples.desktop
exercise
glade-2.12.2
keep-learning
music
newcomer
Notes
photos
programs
projects
python-scripts
shell-scripts
tmp
公共的
视频
图片
文档
音乐

<二>
代码:
cd ~
echo $(ls) > tmp/'test($)' # $(ls)写成`ls`效果相同

生成的文件test($)内容如下:
引用:
bin date Desktop documents Downloads examples.desktop exercise glade-2.12.2 keep-learning music newcomer Notes photos programs projects python-scripts shell-scripts tmp 公共的 视频 图片 文档 音乐

看出区别了吗?
为什么把ls命令的输出结果经过$()或``代换后本来是多行内容却变成了一行内容呢?
希望有人解释以下,谢谢!!!


_________________
http://wonc.me/


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 关于反引号或$()代换操作,在此请教...
帖子发表于 : 2009-10-03 22:05 
头像

注册: 2009-05-20 21:43
帖子: 735
送出感谢: 2
接收感谢: 2
这样做有什么用意吗?


_________________
http://wonc.me/


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 关于反引号或$()代换操作,在此请教...
帖子发表于 : 2009-10-03 22:44 
头像

注册: 2009-09-18 10:03
帖子: 90
地址: 北京
送出感谢: 0 次
接收感谢: 0 次
你要一样可以用
代码:
echo "$(ls)"


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 关于反引号或$()代换操作,在此请教...
帖子发表于 : 2009-10-03 22:47 
头像

注册: 2009-09-18 10:03
帖子: 90
地址: 北京
送出感谢: 0 次
接收感谢: 0 次
同样的
如果
代码:
x='a b   c    d'
echo $x         #是a b c d
echo "$x"      #是a b   c    d
任何一本有关shell编程的书都有这个解释


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 关于反引号或$()代换操作,在此请教...
帖子发表于 : 2009-10-03 23:03 
头像

注册: 2009-05-20 21:43
帖子: 735
送出感谢: 2
接收感谢: 2
darkfish 写道:
你要一样可以用
代码:
echo "$(ls)"

shell的语法也太诡异了吧?
真郁闷


_________________
http://wonc.me/


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 关于反引号或$()代换操作,在此请教...
帖子发表于 : 2009-10-03 23:25 
头像

注册: 2009-05-20 21:43
帖子: 735
送出感谢: 2
接收感谢: 2
你们看看我这样理解对不对?
其实$var这种形式也是一种代换语法, 它代换出一个变量的内容, 并把这个内容作为其它命令的一部分(或参数),所以:

代码:
当a='a b     c'时
使用$a实际相当于在命令中插入了a b     c这一串东东:
echo $a 实际等于 echo a b     c,就是echo依次作用在这三个字符上
echo "$a" 实际等价于 echo "a b     c",就是echo直接作用于"a b     c"这个字符串上


_________________
http://wonc.me/


最后由 潇洒走一回 编辑于 2009-10-03 23:29,总共编辑了 1 次

页首
 用户资料  
 
7 楼 
 文章标题 : Re: 关于反引号或$()代换操作,在此请教...
帖子发表于 : 2009-10-03 23:28 
头像

注册: 2008-07-21 9:44
帖子: 2371
地址: 深圳
送出感谢: 0 次
接收感谢: 0 次
呵呵,在shell中变量的引用(引号括住)与变量的替换(没有引号括住)还是有些许区别的。
俺也正在学习shell中 :em11


_________________

My blog


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 关于反引号或$()代换操作,在此请教...
帖子发表于 : 2009-10-03 23:29 
头像

注册: 2008-07-21 9:44
帖子: 2371
地址: 深圳
送出感谢: 0 次
接收感谢: 0 次
潇洒走一回 写道:
你们看看我这样理解对不对?
其实$var这种形式也是一种代换语法, 它代换出一个变量的内容, 并把这个内容作为其它命令的一部分(或参数),所以:

当a='a b c'时
使用$a实际相当于在命令中插入了a b c这一串东东:
echo $a 实际等于 echo a b c,就是echo依次作用在这三个字符上
echo "$a" 实际等价于 echo "a b c",就是echo直接作用于"a b c"这个字符串上

大概也就是这意思了 :em05


_________________

My blog


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 关于反引号或$()代换操作,在此请教...
帖子发表于 : 2009-10-03 23:38 
头像

注册: 2009-05-20 21:43
帖子: 735
送出感谢: 2
接收感谢: 2
为了验证我的猜测,我刚刚做了一个奇妙的试验:
shell下输入:
代码:
PART=' -sh'
ls$PART #相当于ls -sh,注意PART变量以一个空格开始.

输出:
引用:
总用量 21K
0 bin 512 exercise 0 photos 0 公共的
0 date 1.0K glade-2.12.2 0 programs 0 视频
0 Desktop 1.0K keep-learning 0 projects 0 图片
0 documents 0 music 512 python-scripts 0 文档
0 Downloads 0 newcomer 0 shell-scripts 14K 音乐
4.0K examples.desktop 0 Notes 0 tmp


_________________
http://wonc.me/


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 9 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译