Переменная сценария Bash не передается через ssh - PullRequest
1 голос
/ 04 июля 2019

У меня есть bash-скрипт, который подключается к серверу по ssh и в зависимости от состояния переменной выполняет задачу:

#!/bin/bash

foo=$1
ssh user@host.com '
echo In host
if [ "$foo" == "yes" ]; then
   echo "Foo!"
fi
'

Когда я запускаю sh script.sh yes, хотя команда ssh работает, условное выражение оценивается как ложное. Я вижу это, если я echo $foo - он печатает пустую строку. Как я могу получить доступ к значению foo в команде ssh?

1 Ответ

1 голос
/ 04 июля 2019

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

#!/bin/bash

foo=$1
ssh user@host.com '
echo In host
if [ "'"$foo"'" == "yes" ]; then
   echo "Foo!"
fi
'

Теперь представьте (не пытайтесь), что произойдет, если foo='$(rm -rf /)'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...