У меня есть некорректное поведение в моем сценарии bash. Существуют переменные, и все они имеют назначенные им значения, я подтверждаю их, повторяя значения в начале сценария.Переменные в удаленной сессии SSH
Однако при передаче их на удаленный сеанс SSH одна переменная имеет значение, а другая - пустая. Я уверен, что не переписываю значение переменной.
# Script input arguments
USER=$1
SERVER=$2
# Other vars
PFX=$8
#
[email protected]$SERVER
function run {
ssh $ADDRESS /bin/bash [email protected]
}
# Script body, some stuff happens here
run << "SSHCONNECTION2"
sudo mv "/home/$USER/$PFX" "/home/$USER/certs/"
SSHCONNECTION2
Таким образом, выход mv
является
ошибка 03-Jan-2017 17:20:39 мв: не может двигаться '/ дом/админ /' в подкаталог само по себе, «/ home/admin/certs/admin '
Может ли кто-нибудь дать мне подсказку, что я делаю неправильно? Спасибо.
Когда вы цитируете сингл heredoc, вы говорите локальному интерпретатору, чтобы не расширять какие-либо переменные в heredoc. –
... таким образом, используется только * удаленное * значение 'USER', а не локальное. - –
Это на самом деле часть того, почему использование имен всех шапок для ваших собственных переменных - это плохая практика: это означает, что вы используя одно и то же пространство имен, разделяемое операционной системой и инструментами оболочки, поэтому вы можете неосознанно переписывать (или неосознанно * использовать *) переменные со значением для других частей системы. –