内生成文件源的env变量文件

时间:2019-02-01 14:02:25

标签: linux bash jenkins makefile

所以从我的本地机器我能做到这一点:

 . env_vars.env

和它工作得很好:

cat env_vars.env

#!/bin/bash
export abce=def

但是当我尝试在makefile中反映它时,它什么也不返回:

SHELL=/bin/bash

print-env-vars:
        . env_vars.env
        echo ${abce}

我也试图与源env_vars.env内生成文件,但输出仍然是相同的。想知道如何可以生成文件内我源变量。

1 个答案:

答案 0 :(得分:2)

make配方的每一行都由单独的外壳程序执行,因此,即使您提供文件的源代码,也要在评估下一行之前退出作为其源代码的外壳程序。等效于从您的shell运行以下命令:

bash -c '. env_vars.env'
bash -c 'echo ${abce}'

把在同一行上两个命令(或使用\,以拆分到多个物理线路的单个逻辑线),以使两者在相同的外壳中执行。分号是必要的,这样的外壳没有看到. env_vars.env echo ${abce} 作为要运行的单个命令。

print-env-vars:
        . env_vars.env; \
        echo $${abce}

(双美元符号可确保您实际上将参数扩展传递给外壳,而不是make尝试扩展make变量。)