Я хотел бы выполнить команду и скрипт, расположенный на удаленной машине, со скриптом на локальной машине. Я знаю, что можно выполнять такие команды с помощью ssh
, поэтому я сделал:
#!/bin/bash
ssh username@target 'cd locationOf/theScript/; ./myScript.sh'
Работает отлично. Я хотел бы, чтобы этот скрипт был более общим, используя переменные. Теперь это:
#!/bin/bash
LOCATION=locationOf/theScript/
EXEC=myScript.sh
ssh username@target 'cd ${LOCATION}; ./${EXEC}'
И я получаю эту ошибку: bash: ./: is a directory
Я думаю, что удаленная машина не знает этих переменных. Так есть ли способ экспортировать их в цель?
shell-script
ssh
remote
variable-substitution
Жан-Батист Мартин
источник
источник
Ответы:
Я не знаю простой способ экспорта переменной среды для цели, но ваш сценарий может сработать , если заменить
'
с"
. С'
s строка'cd ${LOCATION}; ./${EXEC}'
передается дословно, но сПодстановка переменных производится локально.
Обратите внимание, что значения
LOCATION
иEXEC
передаются в удаленную оболочку, поэтому это работает, только если они не содержат специальных символов оболочки.источник