Using SED in a ssh command on a remote node

2019-07-28 09:43发布

问题:

I wrote a script to ssh to some nodes and run a sed command inside the node. The script looks like

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

However, the error is

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

It seems that the character ' is not treated as the begining of a sed command.

回答1:

I suggest to replace

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

by

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

If you absolutely want to use single quotes:

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


标签: bash ssh sed