通过bash访问.env变量的值

时间:2018-07-09 15:31:22

标签: bash

这是我的JobDateRange

.env

如果我运行APP_NAME=Admin APP_URL=http://localhost:4202 JWT=secret12345 PORT=3002 ,我会得到cat .env | grep APP_URL

我需要运行什么才能只获得值APP_URL=http://localhost:4202

我敢肯定,我可以通过基于http://localhost:4202符号分解字符串,并基于数组的第二个元素来获取它,但是我希望有一个一种更干净的方式。

5 个答案:

答案 0 :(得分:2)

您可以在子外壳中 source 文件并直接访问变量值。使用命令替换可以帮助您实现这一目标,

url=$(. ./.env; printf '%s' "$APP_URL")

执行. ./file是一种POSIX方式,用于将文件提供给正在运行的shell,在我们的例子中,是在$(..)结构下进行的。

答案 1 :(得分:2)

您可以使用以下两种方式之一:

awk解决方案:

awk -F= '$1 == "APP_URL" {print $2}' .env
http://localhost:4202

或在子外壳中获取该文件:

( source .env; echo "$APP_URL" )
http://localhost:4202

答案 2 :(得分:1)

解决方案第一: :您可以尝试将其. ./.env导入到框中,然后简单地打印echo "$APP_URL",然后应该会得到值。

解决方案2nd: :如果您想将其读取为Input_file,请执行以下操作。

sed -n '/APP_URL/s/.*=//p'  .env

答案 3 :(得分:1)

选项1:源文件

$ source .env
$ echo "$APP_URL"

选项2:grep和xargs

$ APP_URL=$(grep APP_URL .env | xargs)
$ APP_URL=${APP_URL#*=}

答案 4 :(得分:1)

我也是laravel用户。如果要在基本目录中执行该命令,请执行以下命令。

grep -e "APP_URL" /path/to/.env | awk -F= '{print $2}'

尝试并让我知道这是否是您想要的。