我需要用以下代码替换远程服务器上的文件中的字符串:
ssh username@${TARGETSERVER} -i /path/to/ssh-key perl -p -i -e "s#\$user = \'${SDBUSER}\'\;#\$user = \'${TDBUSER}\'\;#g" ${TARGETDIR}/configuration.php
这将取代joomla安装中的远程服务器上的db用户,顺便说一句。
如果我在远程服务器上以交互方式执行该操作并填充了所有变量,那么它正在工作。
如果我将上面的行放在bash脚本中,我收到此消息并且不会发生替换:
"Substitution pattern not terminated at -e line 1."
有什么线索我可以做这个工作吗?我已经尝试了几次逃脱,比如\\'等等,但我没有成功。
提前致谢。
答案 0 :(得分:1)
BINGO - 搞定了:
ssh -T username@${TARGETSERVER} -i /path/to/ssh-key <<EOI
perl -p -i -e "s#\$user = \'${SDBUSER}\'\;#\$user = \'${TDBUSER}\'\;#g" ${TARGETDIR}/configuration.php
exit
EOI
从那里,我可以添加几个perl命令,这样我就不必每次都有sshing的有效负载。