LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 801|回复: 6

问第四个问题...被耻笑...

[复制链接]
发表于 2004-8-19 17:43:58 | 显示全部楼层 |阅读模式
第一个问题:

  1. x=abcde
  2. #expr length "expr substr $x 2 5"
  3. #20
  4. #expr length "aaaa aaaaaa aa a a"
  5. #18
复制代码

为什么同样的长度会显示出不同的结果?

第二个问题:
既然

  1. #x=abcd
  2. #expr substr $ 2 5
  3. #bcd
复制代码

那么我能不能在一个语句中直接算出expr substr $x 2 5的长度呢?
比如我用expr length "expr substr $x 2 5"就是这个意图,但是失败了

第三个问题:

  1. #x=aabbccdd
  2. #echo ${x#a}
  3. #abbccdd
  4. #echo $x
  5. aabbccdd
复制代码

可见第二行的命令是临时的,我想保留这个值,但是我又不能
#y=echo ${x#a}
那我该怎么办呢?

第四个问题:
#x=aabbccdd
我想换掉第二个a怎么实现呢?进一步,如果我想换掉一串东西,但是其中有几个想保留或者另外赋值,该怎么办呢?
比如aaaaaa
1、除中间两个外都换成b
2、除中间两个换成c外都换成b

谢谢帮助!!
发表于 2004-8-19 18:31:17 | 显示全部楼层
1,
$x跟"aaaa aaaaaa aa a a"有什么关系吗?!
2,
expr length $(expr substr $x 2 5)
3,4问题见:
http://www.linuxsir.cn/bbs/showthread.php?threadid=92866
 楼主| 发表于 2004-8-19 20:37:59 | 显示全部楼层
谢谢解答,由于排版的关系,可能看得不是很清楚

  1. expr substr $x 2 5
  2. aaaa aaaaaa aa a a
复制代码

这两个长度相同但是显示出的结果是不同的,不知道为什么
前一个是20、后一个是18
再次感谢!!
发表于 2004-8-19 23:45:28 | 显示全部楼层

  1. /home/lee#expr length "expr substr \$x 2 5"
  2. 18
  3. /home/lee#expr length "aaaa aaaaaa aa a a"
  4. 18
  5. /home/lee#
复制代码

or

  1. /home/lee#expr length 'expr substr $x 2 5'
  2. 18
  3. /home/lee#expr length 'aaaa aaaaaa aa a a'
  4. 18
复制代码

因为在expr substr $x 2 5中,有个变量被替换出来了
 楼主| 发表于 2004-8-20 00:25:27 | 显示全部楼层
哦,跳出就可以了,谢谢了
我还有一个疑问,我上面写的这些是不是就是传说中的正则表达式?
发表于 2004-8-20 00:34:35 | 显示全部楼层
最初由 bestee 发表
哦,跳出就可以了,谢谢了
我还有一个疑问,我上面写的这些是不是就是传说中的正则表达式?

传说中的正则表达式在这里
http://www.linuxsir.cn/bbs/showthread.php?threadid=24248
 楼主| 发表于 2004-8-20 00:48:49 | 显示全部楼层
好的,谢谢KornLee兄,多谢你的指导!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表