我正在尝试执行一个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
我想要一个包括使用正确转义` or $() because I'd like to know if it's possible.
的 echo 的答案可能会更复杂。