以下 bash 语法是什么意思:
function use_library {
local name=$1
local enabled=1
[[ ,${LIBS_FROM_GIT}, =~ ,${name}, ]] && enabled=0
return $enabled
}
我不是特别理解 [[ ,${LIBS_FROM_GIT}, =~ ,${name}, ]]
行。它是某种正则表达式或字符串比较吗?
最佳答案
这是比较变量并防止其中一些未定义/为空的奇怪行为的技巧。
您可以使用、
或任何其他。主要是它想比较 ${LIBS_FROM_GIT}
和 ${name}
并防止其中一个为空的情况。
正如 Etan Reisner 在评论中指出的那样,[[
没有空变量扩展问题。所以这个技巧通常在与单个 [
:
这行不通:
$ [ $d == $f ] && echo "yes"
bash: [: a: unary operator expected
但如果我们在两个变量周围都添加一个字符串,它就会这样做:
$ [ ,$d, == ,$f, ] && echo "yes"
$
最后,注意你可以直接使用这个:
[[ ,${LIBS_FROM_GIT}, =~ ,${name}, ]] && return 0 || return 1
关于linux - 了解 bash 脚本语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27489501/