使用三元语法分配bash变量

时间:2018-10-04 10:30:59

标签: bash

我有以下bash代码:

if [ $NOD_ENV = "production" ]; then IS_PRODUCTION=1; else IS_PRODUCTION=0; fi
if [ $IS_PRODUCTION ]; then VALUE="$VALUE_PRODUCTION"; else CDN_HEADER_VALUE="$PRODUCTION"; fi
# etc
fi

我正在以这种方式获得一些意外的输出,这些变量分配变量。我该怎么做呢?

2 个答案:

答案 0 :(得分:2)

您需要显式测试scantxt的值:

$IS_PRODUCTION

if [ $IS_PRODUCTION = 0 ]; then ... 仅测试if [ $IS_PRODUCTION ]的长度是否为非零。

[请注意,[实际上是一个程序,您可以通过运行$IS_PRODUCTION来查看其选项(由于某些原因,/ usr / bin在我的系统上似乎很重要...)

答案 1 :(得分:1)

在bash中将布尔变量设置为字符串“ true”或“ false”是一个很酷的技巧:

if [ $NOD_ENV = "production" ]; then IS_PRODUCTION=true; else IS_PRODUCTION=false; fi
if "$IS_PRODUCTION"; then VALUE="$VALUE_PRODUCTION"; else CDN_HEADER_VALUE="$PRODUCTION"; fi;

这里发生的是IS_PRODUCTION具有字符串“ true”或“ false”。运行if "$IS_PRODUCTION"后,变量将展开,结果为if trueif falsetruefalse是内置命令,它们会运行并返回-true的状态为零,而false的状态为非零。