簡體   English   中英

如何取消 bash 中的數組?

[英]How to unset array in bash?

在 bash shell 為變量:

#!/bin/bash
set -o nounset

my_var=aaa
unset var
echo "$var"

因為set命令被定義為在未設置變量時返回錯誤,所以最后一行返回錯誤:

第 6 行:var:未綁定變量

好的,這就是我想要的。

現在與 arrays 相同:

#!/bin/bash
set -o nounset

my_array=(aaa bbb)
unset my_array
echo "${my_array[@]}"

但令我驚訝的是,最后一行沒有返回錯誤。 我希望 bash 腳本在未定義數組時返回錯誤。

${my_array[@]}類似於$@ ,它被記錄為被nounset忽略:

-u在執行參數擴展時,將除特殊參數“@”和“*”之外的未設置變量和參數視為錯誤。 如果嘗試對未設置的變量或參數進行擴展,則 shell 會打印一條錯誤消息,如果不是交互式的,則以非零狀態退出。

但是,返回數組大小不會被忽略。 在前面添加以下行以確保數組未被取消設置:

: ${#my_array[@]}

暫無
暫無

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

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