Я наткнулся на этот поток, когда я пытался повторно использовать Docker --env-file
s в оболочке. Их формат не совместим с bash, но он прост: name=value
, без цитирования, без подстановки. Они также игнорируют пустые строки и комментарии #
.
Я не мог получить его совместимым с posix, но вот тот, который должен работать в bash-подобных оболочках (проверен в zsh на OSX 10.12.5 и bash на Ubuntu 14.04):
while read -r l; do export "$(sed 's/=.*$//' <<<$l)"="$(sed -E 's/^[^=]+=//' <<<$l)"; done < <(grep -E -v '^\s*(#|$)' your-env-file)
Он не будет обрабатывать три случая в примере из документов, связанных выше:
bash: export: `123qwe=bar': not a valid identifier
bash: export: `org.spring.config=something': not a valid identifier
FOO
)