簡體   English   中英

:=和[[之間有行為差異嗎?

[英]Are there behavioral differences between := and [[?

這兩個代碼片段是否都表現出相同的行為,一個使用冒號等號,另一個使用雙括號程序?

: "${foo:=bar}"

if ! [[ $foo ]]; then
    foo=bar
fi

如果它們的行為相同,那么從造型上看,哪個是首選? 我已經看到這兩種方法在不同的地方使用過,因此我無法確定哪種方法在可維護性和可讀性上更好。

據我所知,它們在功能上是等效的。 至於哪個最好,我想說這是一個品味問題。 就個人而言,我更喜歡: ${foo:=bar}因為它更簡潔,但其他人對語法的不熟悉可能會采用更明顯的方法。

請注意,您的第一種方法使用標准外殼程序功能,因此應在任何符合POSIX的外殼程序上工作。 為了使您的第二種方法更具可移植性,我將采用:

if [ -z "$foo" ]; then
    foo=bar
fi

如評論中所建議,可以將另一種選擇視為清晰與簡潔之間的折衷方案:

foo=${foo:-bar}

如果已設置${foo:-bar} ,則其值為$foo ,否則為bar

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM