Передача переменных в удаленной команде ssh



Я хочу иметь возможность запускать команду с моей машины с помощью ssh и проходить через переменную окружения $BUILD_NUMBER



вот что я пытаюсь:



ssh [email protected] '~/tools/myScript.pl $BUILD_NUMBER'


$BUILD_NUMBER устанавливается на машине, выполняющей вызов ssh, и поскольку переменная не существует на удаленном хосте, она не поднимается.



как передать значение $BUILD_NUMBER ?

781   4  

4 ответов:

Если вы используете

ssh [email protected] "~/tools/run_pvt.pl $BUILD_NUMBER"

вместо

ssh [email protected] '~/tools/run_pvt.pl $BUILD_NUMBER'

ваша оболочка будет интерполировать $BUILD_NUMBER перед отправкой командной строки на удаленный хост.

переменные в одинарных кавычках не вычисляются. Используйте двойные кавычки:

ssh [email protected] "~/tools/run_pvt.pl $BUILD_NUMBER"

оболочка будет расширять переменные в двойных кавычках, но не в одинарных кавычках. Это изменится в нужную строку перед передачей в

как было сказано ранее, вам не нужно устанавливать переменную окружения на удаленном хосте. Вместо этого вы можете просто выполнить мета-расширение на локальном хосте и передать значение удаленному хосту.

ssh [email protected] '~/tools/run_pvt.pl $BUILD_NUMBER'

если вы действительно хотите установить переменную среды на удаленном хосте и использовать ее, вы можете использовать env программа

ssh [email protected] "env BUILD_NUMBER=$BUILD_NUMBER ~/tools/run_pvt.pl $BUILD_NUMBER"

в данном случае это немного перебор, и примечание

  • env BUILD_NUMBER=$BUILD_NUMBER делает мета расширение на местный хозяин
  • пульт BUILD_NUMBER переменная окружения будет использоваться
    удаленная оболочка

бежать переменной для того, чтобы получить доступ к переменным вне сеанса SSH : ssh [email protected] "~/tools/myScript.pl \$BUILD_NUMBER"

Comments

    Ничего не найдено.