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.
Könnte es sein, dass nur die einfachen Anführungszeichen "$ @ $ line" eine variable Erweiterung verhindern? – krork