【问题标题】:Exporting environment variables with spaces导出带空格的环境变量
【发布时间】:2017-06-22 17:35:25
【问题描述】:

我希望有一种一致的方式来处理环境变量。例如我有一个文件.env.development 包含:

# Some comment to be ignored
VAR0='some""" value0'
VAR1="some value1"
VAR2=ignored_value
VAR2=some_value2

从 bash shell 我可以设置 shell 变量(不是环境变量):

$ source .env.development
$ echo $VAR0
some""" value0
$ echo $VAR1
some value1

我还想让这些变量可用于从 shell 启动的子进程:

script.py

#!/usr/bin/python
import os
print("VAR0 is:", os.environ.get("VAR0")

因此,我需要导出这些变量。使用以下内容很接近,但保留了允许获取文件所需的引号:

$ IFS=$'\n' && export $(grep -v ^# .env.development | xargs -0) && unset IFS && ./script.py
('VAR0 is:', '\'some""" value0\'')

我想得到输出:

('VAR0 is:', 'some""" value0')

【问题讨论】:

    标签: bash shell environment-variables


    【解决方案1】:

    您可以忽略 grep、xargs 和 IFS,并使用 set -asource

    $ set -a && source .env.development && set +a && ./script.py 
    ('VAR0 is:', 'some""" value0')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-27
      • 2021-10-03
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      • 1970-01-01
      • 2019-12-06
      • 2018-07-08
      相关资源
      最近更新 更多