651 Stimmen

Erweiterung von Variablen in einfachen Anführungszeichen in einem Bash-Befehl

Ich möchte einen Befehl von einer Bash-Skript die einfache Anführungszeichen und einige andere Befehle innerhalb der einfachen Anführungszeichen und eine Variable enthält.

z.B.. repo forall -c '....$variable'

In diesem Format, $ ist escaped und die Variable wird nicht erweitert.

Ich habe die folgenden Varianten ausprobiert, aber sie wurden abgelehnt:

repo forall -c '...."$variable" '

repo forall -c " '....$variable' "

" repo forall -c '....$variable' "

repo forall -c "'" ....$variable "'"

Wenn ich den Wert anstelle der Variablen einsetze, wird der Befehl ordnungsgemäß ausgeführt.

Bitte sagen Sie mir, was ich falsch mache.

-1voto

Mr.G Punkte 9

Ich habe mich gefragt, warum ich meine awk-Anweisung nie von einer ssh-Sitzung aus drucken konnte, also habe ich dieses Forum gefunden. Nichts hier hat mir direkt geholfen, aber wenn jemand ein ähnliches Problem wie unten hat, dann geben Sie mir ein Up-Vote. Es scheint, dass alle Arten von einfachen oder doppelten Anführungszeichen nicht helfen, aber ich habe auch nicht alles ausprobiert.

check_var="df -h / | awk 'FNR==2{print $3}'"
getckvar=$(ssh user@host "$check_var")
echo $getckvar

Was bekommen Sie? Eine Ladung Nichts.

Fix: Flucht \$3 in Ihrer Druckfunktion.

-4voto

drgnfr Punkte 83

Ist das für Sie in Ordnung?

eval repo forall -c '....$variable'

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X