Я пытаюсь выполнить одну команду над ssh
, которая содержит "подкод" или $(субокод) (я использую его все время, но я не знаю официального имени для этого) сначала выполняется, а на целевом сервере.
Для аргумента, скажем, это команда, которую я хочу использовать. Конечно, это можно сделать с помощью 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
Я бы хотел, чтобы ответ, который включал в себя использование escaped с эскизом ` or $() because I'd like to know if it possible.
, мог быть чем-то более сложным.