我有以下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
我正在以这种方式获得一些意外的输出,这些变量分配变量。我该怎么做呢?
答案 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 true
或if false
。 true
和false
是内置命令,它们会运行并返回-true
的状态为零,而false
的状态为非零。