Переменная Bash всегда пуста

Результатом следующего скрипта bash является «пустая строка» на выходе

ssh dev@my_service <<EOF
  START_SERVICE_TIME_IS_UP=124
  echo $START_SERVICE_TIME_IS_UP
  exit  
EOF

Не могу понять почему. Я ожидаю увидеть «124» на выходе. На удаленном сервере работает Red Hat Linux.


person Sb Lon    schedule 02.01.2016    source источник
comment
Вы могли бы использовать shellcheck. Он говорит Закавычите 'EOF', чтобы здесь расширение документа происходило на стороне сервера, а не на клиенте.   -  person that other guy    schedule 02.01.2016


Ответы (2)


Переменные в here-doc расширяются локальной оболочкой, если вы не цитируете здесь-doc. Помещение конечного токена в кавычки приводит к кавычкам здесь-док.

ssh dev@my_service <<'EOF'
  START_SERVICE_TIME_IS_UP=124
  echo $START_SERVICE_TIME_IS_UP
  exit  
EOF
person Barmar    schedule 02.01.2016

всегда используйте "" echo "$START_SERVICE_TIME_IS_UP" что-нибудь удобное для использования echo https://github.com/united-bashers/mkbash

person Thhollev    schedule 02.01.2016
comment
(1) Кавычки здесь не решают проблему: значение расширяется при записи heredoc, до определения переменной. (2) Пожалуйста, четко укажите, как ссылки связаны с вопросом, на который вы отвечаете, иначе они будут выглядеть как спам. - person Charles Duffy; 20.04.2018