Передача переменных в удаленной команде ssh
Я хочу иметь возможность запускать команду с моей машины с помощью ssh и проходить через переменную окружения $BUILD_NUMBER
вот что я пытаюсь:
ssh [email protected] '~/tools/myScript.pl $BUILD_NUMBER'
$BUILD_NUMBER устанавливается на машине, выполняющей вызов ssh, и поскольку переменная не существует на удаленном хосте, она не поднимается.
как передать значение $BUILD_NUMBER ?
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