曲径通幽论坛

标题: 替换反斜杠 [打印本页]

作者: beyes    时间: 2013-11-20 23:07
标题: 替换反斜杠
有如下文本:
$ cat tmp.txt
\hello


在命令行中直接去掉开头处的反斜杠:
$ sed 's/^\\//' tmp.txt
hello

去掉是成功的。如果将同样的语句放在脚本中呢?

[Bash shell] 纯文本查看 复制代码
#!/bin/sh

tmp=`cat tmp.txt | sed 's/^\\//' `

echo $tmp


运行输出:
$ sh and.sh
sed: -e expression #1, char 6: unterminated `s' command


错误!

解决方法有几种:

1. 将语句 sed 's/^\\//'  改为 sed 's/^\\\//' ,即使用了 3 条反斜杠。这里我们可以认为,两条反斜杠实际只等同于一条反斜杠,这样的话,该条反斜杠就会将第 2 条界定符(/) 转义成普通的斜杠符号,造成 sed 只剩下两条斜杠界定符,因此会提示没有闭合的错误。


2. 不使用 ` 符号,而用 $() 来代替:tmp=$(cat tmp.txt | sed 's/^\\//') 。推荐使用这种方法。






欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2