使用shell脚本创建.env文件-如何用逗号包装值?
我目前正在使用以下工具制作一个使用shell脚本创建.env文件-如何用逗号包装值?,shell,sed,environment-variables,Shell,Sed,Environment Variables,我目前正在使用以下工具制作一个.env,以帮助我在使用docker>supervisor>cron时处理环境变量 printenv>/var/www/laravel.env 这将打印一个完美的列表(除了那些在…中有空格的问题) 我知道我可以使用sed在=符号处将它们分开,然后用语音标记将第二部分包装起来 例如 MY_VAR=“我的空间价值有效” 非常感谢您的帮助 无法使用printenv的输出可靠地重建所有可能环境变量的值。考虑这个输出: foo=bar baz=3 这是export fo
.env
,以帮助我在使用docker>supervisor>cron时处理环境变量
printenv>/var/www/laravel.env
这将打印一个完美的列表(除了那些在…中有空格的问题)
我知道我可以使用sed
在=
符号处将它们分开,然后用语音标记将第二部分包装起来
例如
MY_VAR=“我的空间价值有效”
非常感谢您的帮助 无法使用
printenv
的输出可靠地重建所有可能环境变量的值。考虑这个输出:
foo=bar
baz=3
这是export foo=bar baz=3
或export foo=$'bar\nbaz=3'
的结果吗?没有办法知道
事实上,我不知道有哪种可移植的方法可以复制任何有效的环境,以便重建它。我能想到的最接近的东西是
bash
,您可以使用declare-px
生成输出,该输出可用作源
命令的目标,以再现名称为有效标识符的值。无法使用printenv
的输出可靠地重建所有可能环境变量的值。考虑这个输出:
foo=bar
baz=3
这是export foo=bar baz=3
或export foo=$'bar\nbaz=3'
的结果吗?没有办法知道
事实上,我不知道有哪种可移植的方法可以复制任何有效的环境,以便重建它。我能想到的最接近的事情是在
bash
中,您可以使用declare-px
生成输出,该输出可以用作源
命令的目标,以复制名称为有效标识符的值。这将起作用,除非值也包含=/code>
printenv |awk -F"=" '{print $1"=""\""$2"\""}'
除非值也包含=
printenv |awk -F"=" '{print $1"=""\""$2"\""}'
对于sed:
printenv | sed 's/\([^=]*=\)\(.*\)/\1"\2"/'
对于sed:
printenv | sed 's/\([^=]*=\)\(.*\)/\1"\2"/'
这些只是我的web应用程序所需的静态值。它工作良好,除了它的空间。知道如何调整输出吗?这些只是我的web应用程序所需的静态值。它工作良好,除了它的空间。关于如何调整输出有什么想法吗?是否可以显示更大的输入和预期输出样本(以及您的空间问题是什么)是否可以显示更大的输入和预期输出样本(以及您的空间问题是什么)完美!,我对xpath非常熟悉。您的解决方案是否比printenv | awk-F“=”{print$1”=“\”“$2”\”“}”好?
我看不出有什么区别:/poster提到,如果=
中存在值(例如:LS\u COLORS=“rs=0:di=01;34:
将输出LS\u COLORS=“rs”
),此awk
将不起作用。只是为了确认,您的将?是的,找到第一个=
后的整个字符串将被引用。@s报告您的解决方案可以改进,以支持环境值中的双引号:printenv|sed's/“/\\”/g'| sed's/\([^=]*=\(.\)/\1”\2“/”
完美!,我对xpath非常熟悉。您的解决方案是否比printenv | awk-F“=”{print$1”=“\”“$2”\”“}”好?
我看不出有什么区别:/poster提到,如果=
中存在值(例如:LS\u COLORS=“rs=0:di=01;34:
将输出LS\u COLORS=“rs”
),此awk
将不起作用。只是为了确认,您的将?是的,找到第一个=
后的整个字符串将被引用。@s报告您的解决方案可以改进以支持env值中的双引号:printenv|sed's/“/\\”/g';sed's/\([^=]*=\(.\)/\1“\2”/