В bash ",`, $ (), $ (()) предварительно интерпретируются и подставляются.
Если вы хотите экранировать эти символы, вы можете использовать \ backslash.
Попробуйте отладить эту команду, используя "set -x" (которую вы можете отключите, используя "set + x"). Он показывает, что предварительно интерпретируется.
Я предпочитаю один апостроф, так как он не обрабатывается. Хотя вы должны избегать каждого апострофа в строке тоже. Попробуйте это:
ssh me @ xxx 'docker kill -s HUP `$$ (docker ps | grep nginx | awk \' \ ')`'
В этом случае команда между '...' будет выполнена на другой стороне ssh. Все параметры будут выполнены там. Если вы хотите отправить параметр из текущей оболочки, вы должны использовать обходной путь для этого. Например:
"Something_here "$ localvar" 'continnue_command'таким образом, $ localvar будет заменен и объединен.