我有两个 sed
命令,它们包含在我的 cook.sh
脚本中。一个命令是
sed -E -i "s/^(\\\$mainDomain=\")[^\"]+(\";)$/\1$MainDomain\2/" /var/config.php
这工作正常。
但是下面的命令几乎是一样的。但它不起作用。
sed -E -i "s/^(\\\$authURI=\")[^\"]+(\";)$/\1$duo_auth\2/" /var/config.php
给出下面的错误信息
sed: -e expression #1, char 36: unknown option to `s'
对此有什么想法吗?
最佳答案
问题可能是由于您的替换变量 $duo_auth
具有未转义的 /
,将默认的 sed
分隔符从 /
到 ~
为
sed -E -i "s~^(\\\$authURI=\")[^\"]+(\";)$~\1$duo_auth\2~" /var/config.php
在不使用-i
的情况下试一下,看替换是否符合预期,确认后放回去。
例子:-
cat /var/config.php
<?php
$authURI="dev.digin.io";
现在设置变量
duo_auth="http://auth.uri.digin.io:3048/"
现在替换,没有-i
sed -E "s~^(\\\$authURI=\")[^\"]+(\";)$~\1$duo_auth\2~" /var/config.php
<?php
$authURI="http://auth.uri.digin.io:3048/";
关于linux - Sed 无法正常工作 - Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41393321/