Я ожидал, что он напечатает v=1
. Почему это печатает v=
?piping сценарий к ssh, неспособный установить переменную
cat<<DONE|ssh [email protected]
v=1
echo v=$v
DONE
На host
, Баш оболочка.
Я ожидал, что он напечатает v=1
. Почему это печатает v=
?piping сценарий к ssh, неспособный установить переменную
cat<<DONE|ssh [email protected]
v=1
echo v=$v
DONE
На host
, Баш оболочка.
Ваш код эквивалентен:
echo "v=1;echo v=$v"|ssh [email protected]
Что вы хотите:
echo 'v=1;echo v=$v'|ssh [email protected]
Вы можете добиться этого с помощью cat<<'DONE'
вместо cat<<DONE
.
Переменные расширены внутри heredocs. Вы должны избежать $
с \
Также см. Http://stackoverflow.com/questions/3314660/passing-variables-in-remote-ssh-command – devnull