我正尝试通过ssh
执行一个包含子代码或$(sub-code)(我经常使用它,但不知道官方名称)先在目标服务器上执行的单个命令。
举个例子,假设这是我想要使用的命令。当然,可以使用hostname
,但这只是一个包含我想使用的所有格式化技巧的简化示例。
echo `uname -a | awk '{print $2}'`
没问题。但是如何正确转义并在单个命令中通过ssh
发送它?以下方式是错误的,因为它会让服务器回复你的本地主机名。子代码在本地执行:
ssh myServer echo `uname -a | awk '{print $2}'`
但是任何想到的逃避方式都行不通:
$ ssh myServer echo \`uname -a | awk '{print $2}'\`
awk: cmd. line:1: {print $2}`
awk: cmd. line:1: ^ invalid char '`' in expression
$ ssh myServer echo \$(uname -a | awk '{print $2}')
bash: syntax error near unexpected token `('
$ ssh myServer echo \$\(uname -a | awk '{print $2}')
bash: syntax error near unexpected token `)'
$ ssh myServer echo \$\(uname -a | awk '{print $2}'\)
awk: cmd. line:1: {print $2})
awk: cmd. line:1: ^ syntax error
bash: -c: line 0: unexpected EOF while looking for matching `)'
bash: -c: line 1: syntax error: unexpected end of file
我希望你能给出一个包含正确转义的 ` 或 $()
的答案,因为我想知道是否可能。 echo`
可能会更复杂。
echo \
command`?而不是直接使用
command`? - anishsane$(
传递到远程服务器。 - user000001