Ich muss eine Variable innerhalb eines Backtick-Ausdrucks in einem rcp
Aufruf eingebettet verwenden.Verwendung von Backtick-Ausdruck mit Variable in einem rcp-Befehl eingebettet
Mein erster Versuch:
#!/bin/sh
release=1
rcp myserver.foo.com:'`ls -t /path/to/my/${release} | head -n 1`' .
Ich nehme an, dies fehlschlägt, weil die Rücken-tick-Expression auf myserver.foo.com
ausgeführt wird, die keine release
Variable hat, so das Argument meinen ls
Befehl ist nur /path/to/my/
.
Ich read dass normalerweise der eval
Befehl verwendet werden kann (ich denke) den Back-Tick-Ausdruck vorverarbeiten. Wenn ich diesen Ansatz versuchen:
#!/bin/sh
release=1
rcp myserver.foo.com:'`ls -t /path/to/my/eval ${release} | head -n 1`' .
... ist der Graviszeichen Ausdruck wie /path/to/my/eval
ausgeführt.
Wie kann ich Variablen in meinem Backtick-Ausdruck in diesem Kontext verwenden?
Um klar zu sein: Ich bin versucht, den Code in Back-Zecken auf dem Remote-Server laufen zu haben, nicht vor Ort (aber ich brauche ${release}
vor Hand lokal gelöst werden)
Danke, aber muss das erste '$' escape ('\ $') sein? Es funktionierte, nachdem ich es entkam ... –
Das erste '$' sollte nicht maskiert werden müssen. –
Es scheint, dass die von Ihnen geposteten Lösungen dazu führen, dass der zuvor mit einem Häkchen versehene Befehl lokal statt auf "myserver.foo.com" ausgeführt wird. Aber wenn ich dem '$' Charakter entgehe, funktioniert es ... also danke! Du hast mich über meine Hürde gebracht! –