2017-02-12 6 views
0

В настоящее время я использую следующее, чтобы сделать .env, чтобы помочь мне с моими переменными окружения при использовании docker> supervisor> cron.Создайте файл .env со сценарием оболочки - как обернуть значение запятыми?

printenv > /var/www/laravel.env

Это выводит список, который идеально (за исключением вопросов, с теми, с пробелами ...)

Я знаю, что я могу использовать sed, чтобы разделить их на = знак, а затем обернуть вторая часть в речевых меток.

Например ..

MY_VAR="MY VALUE WITH SPACES WORKS"

Большую помощь оценили!

+0

является возможностью показать больший образец вашего ввода и ожидаемые результаты (и то, что ваша проблема с пробелом) – NeronLeVelu

ответ

1

С СЕПГОМ:

printenv | sed 's/\([^=]*=\)\(.*\)/\1"\2"/' 
+0

Отлично !, Я действительно cr * p на xpath. Ваше решение лучше, чем 'printenv | awk -F" = "'{print $ 1" = "" \ "" $ 2 "\" "}'' Я не могу сказать разницы:/ –

+0

Как упоминается плакат, awk' не будет работать, если в значениях присутствуют '=' (например: 'LS_COLORS =" rs = 0: di = 01; 34: 'будет выводить' LS_COLORS = "rs" '). – SLePort

+0

Просто подтвердите, ? –

0

Выход printenv не может быть использован для надежного восстановления значений всех возможных переменных окружения. Рассмотрим этот вывод:

foo=bar 
baz=3 

Это результат export foo=bar baz=3 или export foo=$'bar\nbaz=3'? Невозможно узнать.

Фактически, я не знаю о переносном способе воспроизвести любую действительную среду, чтобы ее можно было восстановить. Ближайшая вещь, о которой я могу думать, находится в bash, вы можете использовать declare -px для создания вывода, который может использоваться в качестве цели команды source для воспроизведения значений, имена которых являются действительными идентификаторами.

+0

Это просто статические значения, требуемые моим веб-приложением. Он отлично работает, за исключением пробелов в нем. Любая идея о том, как настроить выход? –

0

Это будет работать, если значения не содержат также =

printenv |awk -F"=" '{print $1"=""\""$2"\""}'