【发布时间】:2014-09-02 13:07:03
【问题描述】:
我在整理我正在处理的 bash 脚本时遇到了一些麻烦
这是我正在使用的代码。
cat /crawler/bc_daemon.php | sed "s/PORT2/${PORT}/ig" | sed 's/IP2/IPADDRESS/ig' | \
sed 's/USER2/USER/ig' | sed 's/PASS2/PASSWORD/ig' > bc_daemon.php
cat /crawler/bc_layout.php | sed "s/GITHUB/${REPO}/ig" | sed "s/COINNAME/${NAME}/ig" > bc_layout.php
奇怪的是这些行在脚本之外单独工作。但是当在脚本里面我得到这个
sed: -e expression #1, char 17: unknown option to `s'
当它可以按字面意思理解时我使用'',当它需要打印变量时使用""
在我看来这应该有效。但我不知道我的错误在哪里
【问题讨论】:
-
我假设
REPO中有斜线,这会过早终止您的s///命令。尝试使用不同的分隔符s!!!或s@@@或不会出现在REPO值中的其他分隔符。 -
仅供参考,BashFAQ #21 建议进行替换的方法没有
sed要求内容中不存在的分隔符的限制。见mywiki.wooledge.org/BashFAQ/021 -
@Etan Reisner 就是这样。非常感谢。没想到 REPO 是一个 url,所以里面有 /。谢谢大家的帮助:)