[英]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.