在远程节点上的ssh命令中使用SED

时间:2016-11-19 17:38:43

标签: bash ssh sed

我写了一个脚本来ssh到一些节点并在节点内运行sed命令。该脚本看起来像

NODES="compute-0-3"
for i in $NODES 
do
  echo $i
  ssh $i 'sed -i \'s/172.16.48.70/172.20.54.10/g\' /etc/hosts;'
done

然而,错误是

unexpected EOF while looking for matching `''
syntax error: unexpected end of file

似乎字符'不被视为sed命令的开头。

1 个答案:

答案 0 :(得分:2)

我建议更换

ssh $i 'sed -i \'s/172.16.48.70/172.20.54.10/g\' /etc/hosts;'

通过

ssh "$i" 'sed -i "s/172.16.48.70/172.20.54.10/g" /etc/hosts'

如果您绝对想要使用单引号:

ssh "$i" 'sed -i '"'"'s/172.16.48.70/172.20.54.10/g'"'"' /etc/hosts'