2016-04-20 9 views

Antwort

1

Grundsätzlich, wenn Sie eine Variable in ein Bash String interpolieren wollen, müssen Sie doppelte Anführungszeichen statt einfacher Anführungszeichen verwenden:

str="${var} foo bar" # works 
str='${var} for bar' # works not 

Im speziellen Fall, dass Sie ssh Befehle in einem ausgeführt werden while-Schleife, empfehle ich dringend /dev/tty explizit als Eingabe für den Befehl übergeben, da, wenn der Remote-Befehl von stdin lesen sollte - egal aus welchem ​​Grund - es wird stdin der while-Schleife schlürfen sonst:

while read line ; do 
    ssh ... -- "${line} ..." < /dev/tty # Pass tty to stdin 
done < input.txt 

Hinweis: Der obige Befehl funktioniert nur, wenn der Prozess in einem Terminal gestartet wurde. Wenn der Prozess nicht in einem Terminal ausgeführt wird, müssen Sie etwas anderes als stdin für den Befehl inner ssh übergeben.

Verwandte Themen