【发布时间】:2012-07-20 02:00:11
【问题描述】:
我正在组装的 bash 脚本存在一些问题。
$2 是一个类似于“line_old”的字符串,在启动期间提供。 sed 死于
sed: -e expression #1, char 15: unterminated address regex
这是我的代码 sn-p:
redisconfig ()
{
CMD="ssh -q -t -i $HOME/.ssh/amazon-key.pem ubuntu@10.20.10.1"
line_old="ENV['REDIS_URL'] = 'redis://redis:X9g532mq21yY4@ip-10-112-143-152.us-west-2.compute.internal:6379'"
line_new="ENV['REDIS_URL'] = 'redis://redis:X9gKQasdg2yY4@$2:6379'"
updateconfig="$($CMD sed "/$line_old/c\$line_new/" /home/ubuntu/config/testing.rb)"
results="$($CMD grep 'REDIS_URL' /home/ubuntu/config/testing.rb)"
echo $updateconfig
echo $results
}
知道我的 sed 会发生什么吗?非常感谢!
【问题讨论】:
-
请看BashFAQ/050。
-
$line_old中的斜线可能被解释为分隔符。尝试逃脱它们。 -
@ghoti:或者只是在
sed命令中使用备用分隔符,例如|。 -
即使是转义斜线似乎也让我挂断了 char 15。我认为这意味着 $line_old 的 char 15 是单引号。
-
@ghoti:您可以使用
\121将“1”用作 1addr 的分隔符。同样,\|pattern|使用管道。
标签: regex bash shell scripting sed