`sub-code` または $(sub-code) を含む単一のコマンドを実行しようとしてssh
います (常に使用していますが、その正式な名前はわかりません) が最初に実行されますが、ターゲット サーバー。
議論のために、これが私が使いたいコマンドだとしましょう。もちろん、これは で実行できますhostname
が、これは、使用したいすべての書式設定ウィザードを含む単純化された例にすぎません。
echo `uname -a | awk '{print $2}'`
問題ない。ssh
しかし、これを適切にエスケープして 1 つのコマンドで送信するにはどうすればよいでしょうか。以下は、サーバーがローカル ホスト名を応答できるようにするため、間違っています。サブコードはローカルで実行されます。
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`の使用を含む回答は、もっと複雑になる可能性があります。