【问题标题】:echo bash variable in node spawn command在节点生成命令中回显 bash 变量
【发布时间】:2018-09-27 14:27:06
【问题描述】:

帮我推断 bash 变量值!

我一直在谷歌上搜索一些解决方案,但到目前为止还没有找到我想要做的示例。

我有一个 Jenkins 作业,它正在运行一个包含节点运行时的 docker 映像。在创建 docker 映像期间,提供了一些环境变量(使用 export),我想通过生成 child_process 并使用 bash 提取变量指向的文字值来捕获这些变量。

例如,const child = child_process.spawn('echo', ['$var']);

我尝试了所有我能想到的引号和转义变体,但我不确定如何从此命令引用 bash 变量,从节点脚本的衍生子进程内部调用。

如果有任何不清楚的地方,请告诉我。我有一个首选的最终解决方案,但它现在被阻止了,所以我正在尝试解决这个问题,同时我们等待其他解决方案可用。

更新清晰度 - 环境变量存储在 bash 中。您通常可以使用echo $var 访问它。我在运行节点脚本的 bash shell 中,我想通过生成子进程来推断要在节点脚本中使用的值。

【问题讨论】:

    标签: node.js bash docker jenkins spawn


    【解决方案1】:

    使用printenv 而不是echo

    我和你有同样的问题,这里接受的答案没有帮助。不知道为什么会被接受。

    尝试使用printenv而不是echo来显示ENV值,如下所示:

    const child = child_process.spawn( 'printenv', [ 'var' ] );
    

    【讨论】:

    • tbh 这是几年前的事了,对我来说离上下文太远了!我会尝试验证您的答案
    • 一切都好。只是想添加对我有用的解决方案,以帮助其他登陆这里的人。
    【解决方案2】:

    在节点中,您可以访问全局 process 对象上的环境变量:

    process.env.MY_ENV_VAR
    

    在你的情况下:

    const child = child_process.spawn('echo', [process.env.var]);
    

    【讨论】:

    • 变量存储在bash中,而不是node中。
    • 啊,我明白你在说什么。如果它们存储在 .bash_profile 中,但它们不是。
    猜你喜欢
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-27
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多