论坛风格切换切换到宽版
  • 671阅读
  • 8回复

[RedHat] 这两条命令的结果为什么不一样? [复制链接]

上一主题 下一主题
离线xiaobeinet.
 
发帖
2097
C币
-152583
威望
378
贡献值
1
银元
-5
铜钱
4721
人人网人气币
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-04-27
echo "$(ls)"
echo $(ls)
帮忙解释一具体过程?谢谢了。

评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
离线kawayiyi.
发帖
2126
C币
-60558
威望
397
贡献值
1
银元
-2
铜钱
4789
人人网人气币
0
只看该作者 沙发  发表于: 2010-04-10
Re:[RedHat]
怎么个不一样了?
最后都是显示ls当前目录的结果啊!

离线acmilanajax.
发帖
2104
C币
-593911
威望
388
贡献值
3
银元
-1
铜钱
4730
人人网人气币
0
只看该作者 板凳  发表于: 2010-04-10
Re:[RedHat]
我对shell这方面也不太熟悉,简单说一下我的猜测吧!
假如当前目录中有a、b两个文件
echo $(ls)
相当与echo a b

echo “$(ls)”
双引号使ls执行后所显示的字符间的IFS即《space》变为null值,echo显示时就
就分别在每行中显示。
不知道对不对还请高人给个正确答案!

离线hackerstudy.
发帖
2066
C币
-193385
威望
377
贡献值
1
银元
-2
铜钱
4603
人人网人气币
0
只看该作者 地板  发表于: 2010-04-10
Re:[RedHat]
这是shell的部分内容,有时间再多复习下shell :)

离线chinablue.
发帖
2151
C币
-235260
威望
390
贡献值
1
银元
-3
铜钱
4734
人人网人气币
0
只看该作者 4楼 发表于: 2010-04-10
Re:[RedHat]


QUOTE:原帖由 志国 于 2008-6-12 01:12 发表
我对shell这方面也不太熟悉,简单说一下我的猜测吧!
假如当前目录中有a、b两个文件
echo $(ls)
相当与echo a b

echo “$(ls)”
双引号使ls执行后所显示的字符间的IFS即《space》变为null值,echo显示 ...

谢谢你的回答。
1。为什么会变为null?
2. 变为null就是换行吗?

离线ppkart.
发帖
2118
C币
-131893
威望
410
贡献值
1
银元
-1
铜钱
4693
人人网人气币
0
只看该作者 5楼 发表于: 2010-04-10
Re:[RedHat]
1。为什么会变为null?
""-soft quoting 的作用就是使特殊字符变为普通字符,但$()还有一部分是例外的,而字符间的IFS在“”间变为空值null


2. 变为null就是换行吗?
这点我也不太确定,
a b之间的IFS变为空值的话,你说怎么在一行中显示?ab?所以...
我是这么认为的。
因为我在shell方面也不太熟!所以你就直当参考吧!

如果有高人路过还请帮忙!!!!!

离线sfcq.
发帖
1976
C币
-199261
威望
356
贡献值
1
银元
-2
铜钱
4517
人人网人气币
0
只看该作者 6楼 发表于: 2010-04-10
Re:[RedHat]


QUOTE:原帖由 tianlijian 于 2008-6-11 21:37 发表
第一个是分行显示 的,第二个没有分行。


"$(ls)"由 " "保持ls里输出的 CR 特性.,关于这个请参写SHELL版的13问..
没有引号的话则将这些一个一个输出..因些

$ echo             a  b  --跟没加引号的一样,这样的话,系统认为是一个命令加了两个参数a,b
   $basename $1 $2

$ echo            "a b" --跟加引号的类似,这个的话只有一个参数 "a b",当然要保持这个参数的内容啰.
   $basename $1

$ echo 'a
b'
再看下结果..

发帖
2055
C币
-235906
威望
360
贡献值
1
银元
-1
铜钱
4622
人人网人气币
0
只看该作者 7楼 发表于: 2010-04-10
Re:[RedHat]
离线caicuc.
发帖
2046
C币
-152383
威望
390
贡献值
1
银元
-1
铜钱
4661
人人网人气币
0
只看该作者 8楼 发表于: 2010-04-10
Re:[RedHat]


QUOTE:原帖由 liaosnet 于 2008-6-12 20:22 发表


"$(ls)"由 " "保持ls里输出的 CR 特性.,关于这个请参写SHELL版的13问..
没有引号的话则将这些一个一个输出..因些

$ echo             a  b  --跟没加引号的一样,这样的话,系统认为是一个命令加了两个参 ...

谢谢!
明白了一些。
还有个问题想要请救:
ls 输出的是以CR来分隔,那为什么直接ls是以空格来分隔的,而ls -l是分行显示的。
快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个