Wpis z mikrobloga

Mirki z #linux #shell #bash #programowanie
Dlaczego skrypt nie czeka mi na odpowiedź z ssh, tylko wykonuje się dalej, i to jakoś dziwnie?
Prosty przykład:

local_home=$HOME
remote_home="$(ssh user@host 'echo $HOME')"
local_home="$HOME/foo"
remote_path="$remote_home/bar"
foo=bar
Zmienna $remotehome będzie prawidłowa, a $remotepath pusta. Co więcej $localhome będzie puste (°° , a $foo już będzie ok.
  • 9
@grajlord: OK, dobra. Skrypt działa dobrze. Natomiast kopiuj/wklej do konsoli z pliku tekstowego jest przerywane w momencie odpalenia połączenia ssh (nie wykonuje żadnych komend poniżej tej wywołującej ssh). Czy da się to jakoś obejść?
@carlo497: Jeżeli mam po sobie komendy wywołujące ssh, a następnie wykonujące coś lokalnie, oddzielone znakiem nowej linii, to po wklejeniu ich do terminala wywołanie zostana tylko ta wywołująca ssh, a cała reszta nawet nie zostaje wklejona.
@grajlord: ¯\(ツ)_/¯
carlo@carlo-Toshiba ~ % local
home=$HOME
remotehome="$(ssh kancelaria 'echo $HOME')"

local
home="$HOME/foo"
remotepath="$remotehome/bar"
foo=bar
Enter passphrase for key '/home/carlo/.ssh/priv':
carlo@carlo-Toshiba ~ % echo $remotehome
/root
carlo@carlo-Toshiba ~ % echo $local
home
/home/carlo/foo
carlo@carlo-Toshiba ~ % echo $remote_path
/root/bar
carlo@carlo-Toshiba ~ % echo $foo
bar