在 bash 5.1 中,我可以-v
用來檢查關聯陣列是否存在:
bash-5.1# declare -A a
bash-5.1# a[foo]=bar
bash-5.1# [[ -v a[@] ]]; echo $?
0
但是升級到 bash 5.2 后,我不能再這樣做了:
bash-5.2# declare -A a
bash-5.2# a[foo]=bar
bash-5.2# [[ -v a[@] ]]; echo $?
1
此更改破壞了我的大部分腳本,但我無法找到恢復此功能的方法。
編輯:請參閱此更改的討論:https ://lists.gnu.org/archive/html/bug-bash/2021-04/msg00058.html
tl;drtest -v
現在在與關聯陣列一起使用時將“@”視為文字鍵
uj5u.com熱心網友回復:
要測驗一個名為的變數是否foo
被宣告為關聯陣列:
[[ ${foo@a} = A ]]
a
引數轉換在手冊的 Shell Parameter Expansion 部分進行了描述(一直向下滾動)。
并測驗它是否不為空:
[[ ${#foo[@]} -gt 0 ]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/515837.html
標籤:重击
下一篇:如何在腳本中掃描藍牙設備?