In bash ",` werden $ (), $ (()) vorinterpretiert und ersetzt.
Wenn Sie diese Zeichen mit Escapezeichen versehen möchten, können Sie \ backslash verwenden.
Versuchen Sie, diesen Befehl mit "set -x" (was Sie können) zu debuggen Mit "set + x" ausschalten.) Zeigt an, was vorab interpretiert wird.
Ich bevorzuge den einzelnen Apostroph, da er nicht verarbeitet wird. Obwohl Sie jeden einzelnen Apostroph in der Zeichenfolge auch entkommen müssen, versuchen Sie Folgendes:
ssh me @ xxx 'docker kill -s HUP `$$ (docker ps | grep nginx | awk \' \ ')`'
In diesem Fall wird der Befehl zwischen '...' auf der anderen Seite der SSH ausgeführt. Alle Parameter werden dort ausgeführt. Wenn Sie einen Parameter aus der aktuellen Shell senden möchten, müssen Sie dafür eine Problemumgehung verwenden. Z.B:
'something_here' "$ localvar" 'continnue_command'Auf diese Weise wird "$ localvar" ersetzt und verkettet.