Я пытаюсь передать переменную окружения в свой сценарий оболочки, а затем повторить то, что я передал. В этом примере $ HOME - уже заданная переменная среды.Передача переменных окружения по ssh для удаленного расширения
./my_script.ksh $HOME
#! /usr/bin/ksh
my_var=${1}
echo "You sent: ${my_var}"
Я хочу, чтобы мой выход будет You sent: $HOME
, но вместо этого он оценивает его и производит You Sent: /home/blah/usr
Смысл этого в том, что я планирую делать команду SSH, что мне нужно pass $ my_var тоже не оценивается (aka be $ HOME), потому что $ HOME на каждом сервере является другим значением, а для SSH-команды я хочу, чтобы он использовал значение с сервера, это SSH'ing тоже. так что надеялся просто передать его, поэтому во время SSH он будет правильно оцениваться
Вот пример того, что я хочу иметь. Давайте предположим, $ HOME уже установлен на Server1 и Server2 как:
Server1 $HOME: /home/blah/usr
Server2 $HOME: /home/superblah/newusr
От Server1 выполнить my_script.ksh $HOME
Сценарий такой же, как указано выше, с одной дополнительной линии:
ssh [email protected] "echo Server got: $my_var"
, что мои в настоящее время составляет:
You sent: /home/blah/usr
Server got: /home/blah/usr
Что я хочу, так это то, что ssh com подлежит производству:
Server got: /home/superblah/newusr
Спасибо.
Чтобы было ясно, [ваш ** ** реальный вопрос] (http://stackoverflow.com/questions/42400222/use -remote-environment-variables-value-in-scp-path) с SCP вместо SSH - очень важная разница. –
Кроме того, использование '$ HOME' несколько вводит в заблуждение - оно поддается ответам, которые полагаются на удаленный каталог по умолчанию, когда соединение SCP или SSH выполняется как $ HOME, тогда как ваш реальный прецедент требует чего-то более активного. –
BTW, я пишу код здесь для ksh93 - если вы переключались на bash, вы бы хотели заменить 'foo = $ (printf '% q' ...)' '' printf -v foo '% q' ... ', но многое другое не изменится. С другой стороны, если вы используете какой-то сторонний клон ksh, а не реальный, мой первый совет - переключиться на реальный ksh (если вы хотите что-то быстрое, функциональное и стабильное) или bash (для что-то не так быстро, но активно поддерживается - и в текущем 4.x, довольно чертовски близки к особенностям, даже если синтаксис отличается). –