我有一个环境文件,我通常用它来设置环境变量,但我们正在转换一点,现在想要使用该env文件从中创建多个文件。
我的env文件包含如下所示的行:
MAIL_SETTINGS={"service": "service", "auth": { "user": "example.com", "pass": "pass=something"}}
我想用第一个等号吐出每一行并有两个变量。
MAIL_SETTINGS
和{"service": "service", "auth": { "user": "example.com", "pass": "pass=something"}}
我尝试了一些事情,但一直空着。
for line in $(cat .env | grep -v ^#); do
start=$(echo "$line" |cut -d"=" -f1)
end=$(echo "$line" |cut -d"=" -f2)
echo "$start = $end"
done
一些问题。
{
这样未转义的字符只会分成多行。如何处理特殊字符并仅在第一个等号上拆分?
谢谢!
答案 0 :(得分:2)
for line in $(cat .env | grep -v ^#)
会将输入中的每一行拆分为空格,因此它根本不会起作用。
您需要使用带有while
的{{1}}循环读取行。
请勿使用read
分割线条。
您可以使用参数展开提取第一个cut
符号的左右部分:
=
=
像这样:
=