论坛风格切换切换到宽版
  • 817阅读
  • 4回复

[问题求助][RedHat] 请教shell中命令的执行,shell中的``和$()有什么区别? [复制链接]

上一主题 下一主题
离线大狼.
 
发帖
1986
C币
4898
威望
372
贡献值
0
银元
-1
铜钱
4528
人人网人气币
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-05-01
请教shell中命令的执行,.shell中.的``和$()有什么区别?

本人最近重新编译了red hat 9.0的内核(2.4.20-8..),    美容
之前能.够运行的一.段脚本频繁报错,too many argument错误,.
就是如下红色的代码
if [ -z `/sbin/pidof . myapp.` ]; then电脑
      .......
fi

新编译的内核也是2.4.20-8,make m.enu.config直接保存,但是不能运行上面这段代码,            杀毒
经过多次修改测试,改为
if [ -z $(/sbin/pidof.  myapp) ]; the.n.
就可以了,很奇怪,不知道内核那部分配置能影响到.这.里,    美容
如果我还想支持``单.斜引号,怎么配置内核呢?    外汇
请各位大侠支招啊?

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

精彩

感动

搞笑

开心

愤怒

无聊

灌水
离线bysoft.
发帖
2044
C币
-560003
威望
365
贡献值
5
银元
-2
铜钱
4527
人人网人气币
0
只看该作者 沙发  发表于: 2010-04-13
Re:[RedHat]
新内核的shell加上""就可以了,不知道为什么?
if [ -z "`/sbin/pidof  myapp`" ]; then

难道之前的检测不严格?

离线b88954966.
发帖
1978
C币
-235378
威望
361
贡献值
1
银元
-4
铜钱
4576
人人网人气币
0
只看该作者 板凳  发表于: 2010-04-13
Re:[RedHat]


离线yangjfa.
发帖
2064
C币
-152459
威望
378
贡献值
1
银元
-1
铜钱
4551
人人网人气币
0
只看该作者 地板  发表于: 2010-04-13
Re:[RedHat]
语法就不正确,test的-z参数的意思是:如果字符串长度为零则返回真。

if [ -z `/sbin/pidof  myapp` ]; then
      .......
fi
这条语句在执行时,将`/sbin/pidof  myapp`替换为myapp进程的pid,假设pid的值为1234,那么这条语句就变成了
if [ -z 1234 ]; then
      .......
fi
-z 1234是什么?当然会报错了,如果进程不存在,则命令替换结果为空,此语句则会变成
if [ -z  ]; then
      .......
fi
同样是语法错误。
加上引号之后,会使你的命令替换结果转成一个字符串(也可能是空串),所以就正确了。

``与${}都是命令替换,没什么大区别,只是${}可以嵌套,``不行。

离线dzbz.
发帖
2128
C币
-152321
威望
374
贡献值
1
银元
-4
铜钱
4710
人人网人气币
0
只看该作者 4楼 发表于: 2010-04-13
Re:[RedHat]
ls 回答经典
快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个