Closed chenshifei closed 7 years ago
部署的宿主机是 Mac 吗?
@zw963 是的。我以为脚本改写之后,部署都是在路由器上运行了就没提
@chenshifei , Mac 下面各种各样的问题 ...
我都已经无力修复了 .....
似乎不是mac的问题
AC68U 在 merlin 380.68 上装的 sed 似乎并不是 gnu 版本
admin@RT-AC68U-7D98:/tmp/mnt/sda1/entware/etc/init.d# sed --version
This is not GNU sed version 4.0
所以deploy_start.sh
里replace_escape
函数的这一行有问题
IFS= read -d '' -r <<< "$(sed -e ':a' -e '$!{N;ba' -e '}' -e 's/[&/\]/\\&/g; s/\n/\\&/g')"
在我的mac上装了gnu-sed之后,这一行是能输出结果的。跑去路由上输出是空。
那么接下来在路由上 opkg install sed
,在用/opt/bin/sed
替换掉自带的 sed 之后,上面这个replace_escape
又出现了新问题:
/opt/bin/sed: -e expression #4, char 16: unterminated `s' command
不晓得这次是什么原因。。。
稍等几日, 有空了我会把该死的 sed 全部干掉, 换 perl, 一切都清净了。
@chenshifei , 麻烦把部署脚本中的
self="$(curl -sS https://raw.githubusercontent.com/zw963/deployment_bash/v0.3.6/deploy_start.sh)" && eval "$self"
0.3.6 换为 0.3.7, 试试看, 我本机已经换为 perl 好一阵子了, 使用过程貌似没啥问题.
这个应该修复了. 已测: Mac 下可工作, 不行的话, 使用 brew 升级你的 bash 版本.
我的是 4.4.12
OK,多谢
部署 ss+dnsmasq 时候出现上述错误。去路由器上单独执行
sed -i -e "s/$regexp/$replace/" "$file"
这个命令去替换内容反而没有问题,感觉很奇怪路由器是 AC68 运行 merlin 380.68 固件