2016-09-16 3 views
0

Ich habe einen Befehl wie folgt aus:

ssh [email protected] 'sed -e "s|foo|${bar}|" /home/data/base_out.sql > /home/data/out.sql' 

Der sed Befehl in lokalen Shell arbeitet. Aber es erweitert die Variable nicht über den Befehl ssh. Vielen Dank!

Antwort

0

Die Regel ist, dass in einfachen Anführungszeichen Parameter nicht erweitert werden. Sie haben einfache Anführungszeichen um den gesamten Befehl.

Try this:

ssh [email protected] "sed -e 's|foo|$bar|' /home/data/base_out.sql > /home/data/out.sql" 

Jetzt $bar erweitert wird, bevor die Befehlsfolge als Argument an ssh übergeben wird, das ist, was Sie wollen.

Ich entfernte die geschweiften Klammern um ${bar}, weil ich glaube, dass sie ein falsches Gefühl der Sicherheit bieten. In diesem Fall schützen sie Sie nicht vor den damit verbundenen Problemen using shell variables in sed commands.