@ilovemaryjane

Почему переменная не работает в ssh внутри баш скрипта?

Пытаюсь создать файл на сервере используя данные из переменной

#!/bin/bash

nginx_default_page="server {
  listen 80;
  listen [::]:80;

  location / {
    proxy_pass http://127.0.0.1:3000;
  }

  error_page 500 502 503 504 /custom_50x;

  location = /custom_50x {
    root /usr/share/nginx/html;
    default_type application/json;
    internal;
  }
}
"

ssh $user@$host << 'ENDSSH'
echo "$nginx_default_page" | sudo tee /etc/nginx/conf.d/default.conf
ENDSSH


Переменная в кавычках чтобы сохранить форматирование (иначе все в строку). Можно по другому, или это не влияет?
Создается пустой файл default.conf. Почему, как исправить?
  • Вопрос задан
  • 465 просмотров
Решения вопроса 1
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
VAR="blablabla
blablabla"

echo "$VAR" | ssh $user@$host 'cat>/tmp/file'
ssh $user@$host "sudo cp /tmp/file /etc;rm /tmp/file"
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
planc
@planc
что-то типа:
ssh $user@$host bash -c 'echo $моя_переменная'
Ответ написан
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Почему, как исправить?

Потому что только избранные переменные окружения передаются на удалённую машину в сессии ssh.
Копируй сложный скрипт целиком -- так и отлаживать будет легче.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы