Существует проблема с вызывается через SSH Баш, хотя я читал женихами об этом я до сих пор не могу объяснить следующее:Баш вызывается через SSH не хранит переменные
Вот скрипт, очень просто
#!/bin/bash
theUser=$1
theHost=$2
ssh -tt [email protected]$theHost 'bash' << EOF
a=1
echo 'dat '$a
exit
EOF
и вот результат:
[email protected]:~$ bash thelast.sh victor 10.0.0.8
[email protected]'s password:
a=1
echo 'dat '
exit
[email protected]:~$ a=1
[email protected]:~$ echo 'dat '
dat
[email protected]:~$ exit
exit
Connection to 10.0.0.8 closed.
Как вы можете видеть, окружающая среда не сохраняет значение переменной «а», поэтому он не может эхо, но любые другие команды как ls или date возвращают resul т.
Итак, вопрос в том, что я делаю неправильно и как избежать такого поведения?
p.s. Я не могу заменить ssh -tt, но любая другая команда может быть свободно заменена.
Заранее спасибо
Параметр '$ a' становится оценена, когда файл сценарий считывается и обрабатывается на локальном хосте - удаленная оболочка никогда не видит' $ а '. Вам нужно избежать этого, чтобы отложить оценку. –