-1
A
回答
2
取決於你希望它可能足以爲A
提供一個默認值什麼,B
arr=("${A:-one}" "${B:-two}")
3
在擴大,可能是未設置一個shell變量,您有以下選項:您可以替換默認爲未設定的價值;您可以將變量設置爲默認值,然後替換它;或者你可以提出一個錯誤。
下面是bash的手冊的細節:
${parameter:-word}
使用默認值。如果參數未設置或爲空,則將替換單詞的擴展名 。否則,參數值將被替換爲 。
${parameter:=word}
分配默認值。如果參數未設置或爲空,則字的擴展將被分配給參數。然後代入參數 的值。以這種方式可能不會分配位置參數和特殊參數 。
${parameter:?word}
如果爲空或未設置,則顯示錯誤。如果參數爲空或未設置,則 單詞的擴展(如果單詞爲 ,則該單詞爲 不存在)的擴展會寫入標準錯誤,並且shell將不會退出。否則,將替換參數 的值。
所以如果你想提出一個錯誤,最簡單的用法如下。您可以在問號後添加自定義消息:
% echo ${UNSET?}
-bash: UNSET: parameter null or not set
0
unset A B
arr=("$A" "$B")
set | grep ^arr=
arr=([0]="" [1]="")
好了,你可以通過使用一個循環檢查的所有值:
for ((_i=0;_i<${#arr[@]};_i++));do
[ -n "${arr[_i]}" ] || {
printf -v _v %03o $((65+_i))
printf "empty $%b\n" \\$_v
}
done
empty $A
empty $B
A="aa bb"
arr=("$A" "$B")
set | grep ^arr=
arr=([0]="aa bb" [1]="")
for ((_i=0;_i<${#arr[@]};_i++));do
[ -n "${arr[_i]}" ] || {
printf -v _v %03o $((65+_i))
printf "empty $%b\n" \\$_v
}
done
empty $B
0
有產生錯誤外殼選項在任何使用未設置的變量,但它可能對您的使用情況太普遍。
$ set -u
$ A=6
$ arr=($A $B)
bash: B: unbound variable
相關問題
- 1. 從包含環境變量的路徑中檢查Java是否存在文件
- 2. 檢查環境變量或其包含路徑是否不存在
- 3. 如何檢測Bash環境變量是否被讀取?
- 4. 檢查變量是否存在於bash中的for循環中
- 5. 檢查變量是否包含在數組中
- 6. 檢查環境變量是否存在並設置爲True
- 7. 如何在編譯時查找環境變量是否存在?
- 8. 如何檢查是否在cmake中設置了環境變量
- 9. 如何檢查javascript變量中的值是否包含數字?
- 10. Java - 變量檢查是否包含
- 11. NSIS:如何在編譯時檢查是否有環境變量存在
- 12. 如何檢查變量值是否包含在一個數組中Javascript
- 13. 如何檢查變量是否存在?
- 14. 如何檢查環境變量是否已設置?
- 15. 如何檢查PHP中是否設置了環境變量?
- 16. 如何檢查數組中是否存在變量?
- 17. 如何檢查R環境中是否存在數據框?
- 18. PHP檢查(POST)中的變量是否包含任何數值
- 19. 如何檢查變量是否包含有效的IP地址
- 20. 是否有包含剪貼板內容的環境變量?
- 21. 如何檢查環境變量的存在性?
- 22. 檢查is_page(x)是否包含數組
- 23. 檢查數組是否包含false?
- 24. 檢查是否div包含從數組
- 25. 檢查數組是否包含字符
- 26. 如何檢查數組是否包含空數組?
- 27. 檢查數組的長度是否等於bash中的變量
- 28. Bash環境變量包含c庫的路徑
- 29. 檢查環境變量
- 30. TCL檢查環境變量