有如下文本:
在命令行中直接去掉开头处的反斜杠:
$ 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/^\\//') 。推荐使用这种方法。
|