无法理解它在做什么
TEST_DEBUG=${TEST_DEBUG:-false}
[[ "$TEST_DEBUG" == false ]] || TEST_DEBUG=true
并进一步深入该代码的多个位置。此代码存在
$TEST_DEBUG && echo 1>&2
答案 0 :(得分:2)
TEST_DEBUG=${TEST_DEBUG:-false}
将false
与$TEST_DEBUG
相关联,除非它已经具有值(请参阅man bash
中的 Parameter Expansion )。
[[ "$TEST_DEBUG" == false ]] || TEST_DEBUG=true
当[[ ... ]]
的值为$TEST_DEBUG
时,false
中的条件将返回true。如果返回false,即值不同,则为$TEST_DEBUG
分配true
。
$TEST_DEBUG && echo 1>&2
仅当echo
设置为$TEST_DEBUG
时,此命令才能运行true
。
echo
(不带参数)仅将空行输出到标准输出。 1>&2
将标准输出重定向到标准错误,因此,在这种情况下,空行被打印为标准错误。
答案 1 :(得分:0)
在第一条语句中,运算符:-测试括号内是否存在TEST_DEBUG
变量并进行设置;如果设置了变量,则在TEST_DEBUG中为其赋值(如果未设置)或具有空值,则被分配为假。
TEST_DEBUG=${TEST_DEBUG:-false}
在第二句话中
[[ "$TEST_DEBUG" == false ]] || TEST_DEBUG=true
Bash检查TEST_DEBUG
是否设置为false,否则将其分配为true。
有关其工作原理的更多信息,请查看GNU bash文档。