基于env-var的带bash条件的节点脚本

基于env-var的带bash条件的节点脚本,bash,shell,Bash,Shell,我正在尝试设置我的npm脚本,使其根据环境的不同运行。我想检查是否存在process.env.DEPLOY\u URL,并根据这一点运行单独的脚本 现在,我有- “构建”:“如果[-z${DEPLOY\u URL}]];那么npm运行测试:集成;否则webpack--config webpack.prod.config.js--colors;fi” 但是,运行该命令的命令行是 sh:1:[:未找到 这是在process.env.DEPLOY\u URL可用时发生的,因此它会在我不希望的情况下命中

我正在尝试设置我的npm脚本,使其根据环境的不同运行。我想检查是否存在
process.env.DEPLOY\u URL
,并根据这一点运行单独的脚本

现在,我有-

“构建”:“如果[-z${DEPLOY\u URL}]];那么npm运行测试:集成;否则webpack--config webpack.prod.config.js--colors;fi”

但是,运行该命令的命令行是

sh:1:[:未找到

这是在
process.env.DEPLOY\u URL
可用时发生的,因此它会在我不希望的情况下命中else。我猜正在运行此命令的命令行没有bash。正在寻找修复此问题的方法-或者通过npm脚本实现此目的的任何方法。谢谢


我正在考虑可能使用的东西,但据我所知,它没有!env.var设置。

您可能正在运行一个shell,该shell使用兼容POSIX的shell
sh
,其中
[[
运算符不存在。它是特定于
bash
的功能。要使脚本使用符合POSIX的字符串空检查运算符,请使用
[
运算符

if [ -z "${DEPLOY_URL}" ]

节点脚本正在运行bourne shell
sh
,该脚本与POSIX兼容,但CHC不理解该脚本,该脚本也是bourne特定的construct@Inian好的,谢谢!你能告诉我如何处理这个问题吗?非常感谢!将
[-z${DEPLOY\u URL}]
更改为
[-z${DEPLOY\u URL}”]
并查看worked@Inian成功了!如果你想提交答案,我会标记为正确。再次感谢你!