免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2585 | 回复: 16
打印 上一主题 下一主题

一个sed简单问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-25 17:47 |只看该作者 |倒序浏览
我写了个shell测试脚本test
代码如下
#!/bin/sh
HD="/dev/hda"
HD1=`echo $HD | sed -e 's/\//\\\//g'`
echo $HD1
执行该脚本时报错
$>./test
sed :  -e expression #1, char 9: Unknown option to `s'

我换成下面形式可正常运行
HD="/dev/hda"
echo $HD | sed -e 's/\//\\\//g'>temp
HD1=`cat temp`
echo $HD1

运行结果
$>./test
\/dev\/hda

在命令行测试运行`echo "/dev/hda"|sed -e 's/\//\\\//g'`也能得到正确结果\/dev\/hda
怎么在脚本文件里面运行就出错呢
望达人解惑之··

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2006-07-25 17:58 |只看该作者
HD1=${HD//\//\\/}
PS:俺也不知道咋回事 ?~ ^_^

论坛徽章:
0
3 [报告]
发表于 2006-07-25 18:04 |只看该作者
我试验过了,确实有问题
怀疑出在输入输出上。
第一种方法sed的接受输入有问题
原因我还在想

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2006-07-25 18:12 |只看该作者

论坛徽章:
0
5 [报告]
发表于 2006-07-25 18:17 |只看该作者
可以直言她的问题在那里么?
看过那篇文章,惭愧,还是没找到

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
6 [报告]
发表于 2006-07-25 18:32 |只看该作者
命令替换会产生子shell,造成命令行多解析一次,所以转义的"\"就不够用了。

论坛徽章:
0
7 [报告]
发表于 2006-07-25 19:25 |只看该作者
谢谢

论坛徽章:
0
8 [报告]
发表于 2006-07-26 00:20 |只看该作者
嗯,看了woodie的文章,对命令替换有更深的理解了
3x~

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
9 [报告]
发表于 2006-07-26 02:01 |只看该作者
原帖由 woodie 于 2006-7-25 18:32 发表
命令替换会产生子shell,造成命令行多解析一次,所以转义的"\"就不够用了。

原来如此!

论坛徽章:
0
10 [报告]
发表于 2006-07-26 11:19 |只看该作者
命令行使用命令替换不会产生子shell吗?
在命令行直接使用命令替换
`echo "/dev/hda"|sed -e 's/\//\\\//g'`
是可以成功的啊

望继续解惑
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP