shell內建命令unset和shell數組操作

unset命令

作用:刪除變量或者函數

語法:unset  [-fv]  變量名或函數名

-f   僅刪除函數

-v   僅刪除變量

此命令多用於刪除環境變量,不過本人經常用它來刪除數組的元素,但是需要注意,用unset操作數組風險較大,稍有不慎就會出錯。例如:

  1. a=(0 1 2 3 4 5) 
  2. echo ${#a[@]}            #輸出6 
  3. unset a[0] 
  4. echo ${#a[@]}            #輸出5 
  5. echo ${a[@]}             #輸出1 2 3 4 5 

到此好像也沒什麼問題,繼續

  1. echo ${a[0]}        #輸出空,而不是預想的1 
  2. echo ${a[1]}        #輸出1,而不是預想的2 

這是怎麼回事呢?以下是本人總結的:

第1步:shell給出了6個位置,分別放0、1、2、3、4、5,並且分別給它們編了號0、1、2、3、4、5,並且把這些位置和編號的對應關係記下來,這種關係是不會輕易改變的。

第2步:輸出元素的個數,肯定是6沒問題。

第3步:刪除0號元素(也就是0),這裏的刪除其實是把位置清空,但位置還在。並不會出現第三種情況那樣的,就是0號元素沒了之後其他元素依次往前推,而最後一個位置消失的情況。

第4步:輸出元素個數,肯定是5個沒問題。

第5步:輸出各元素,肯定是1 2 3 4 5

第6步:輸出a[0],此時0號位置根本沒元素,肯定是空。

第7步:輸出a[1],此時1號位置放的就是1沒問題。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章