[英]understand bash script syntax
以下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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.