Linux下shell數組

來源:互聯網
上載者:User

標籤:linux   shell   

shell當中的數組和其他程式設計語言的意義是一樣的,考慮到shell是一個弱類型的指令碼語言,可以在command lime當中直接去定義和使用
例如:
$a[1]="Monday"
$echo ${a[1]}
Monday
$
注意這裡用花括弧,如果寫成echo $a[1] 的話,在執行前shell會進行擴充,結果把a[1]就擴充為"a[1]"的字串,然後和$結合,就直接輸出$後面的字串,即"a[1]",所以在對數組元素操作的時候要用花括弧,以免不必要的出錯。


數組元素的賦值
1 逐個賦值
  就直接把指定的數組元素給定值就行了,如a[2]="Tuesday"

2 批量賦值
  形式和其他的差不錯,格式是 name=(value1 value2 value3 ...)
例如number=("one" "two" "three" "four")
當然你可以指定下標 number=([0]="zero" [1]="one" [2]="two" [3]="three")
例如:
$number=("one" "two" "three")
$echo ${number[0]}
one
$number1=([0]="zero" [1]="one" [2]="two" [3]="three")
$echo ${number1[0]}
zero
$
從這裡可以知道shell當中數組的下標也是從0開始的

數組的操作
1  大小操作
  數組長度的大小可以通過參數擴充瞭解數組的大小,以及數組元素的大小
針對上面的例子可以有:
$echo ${#number[@]}     //輸出數組的大小,這個大小是當前數組實際被利用的有效個數
3
$echo ${#number[2]}     //輸出第三個即three的長度
5
$

2 尋找數組的下標,這個特徵在之前的語言學習當中並沒有接觸到,它是根據檢查數組當中某一位是否有值,如果有,就把數組所在的下標輸出,這可以在我們尋找數組當中元素有很大的協助,
格式是:${!array[@]}    

$number=([1]="Mon" [5]="Fri")
$for i in "${!number[@]}"; do echo $i; done
1
5


3 在數組末尾追加數組元素,和其他接觸的程式設計語言不同,其他語言一旦指定數組長度就不能更改了,而在shell當中它拓展了這類特性,使其能夠根據需要動態增加數組的長度,但是在前面瞭解當中可以看出在運算元組的中期你可能很難知道數組的最大長度了,shell提供一個"+="操作符來解決
$number=(1 2 3)
$echo ${number[@]}
1 2 3
$number+=(4 5 6)
$echo ${number[@]}
1 2 3 4 5 6
$


4 unset array 就可以刪除數組,與之相反的就是定義一個數組,declare -a array
 同樣也可以刪除一個數組當中的元素
例如:
$number=(1 2 3)
$unset ‘number[2]‘   //這裡指定待刪除數組元素,記住這裡應該用單引號,以免shell進行擴充了。
$echo "${number[@]}"
1 2
$

5數組名其實和數組當中的第一個元素的地址是一樣的,所以你對數組名進行有關的賦值,其實歸根結底還是對array[0]的賦值。但是如果unset array操作,則整個數組都沒有了,


6關聯陣列,就是數組下標可以是字串,這種類型的數組表達的意思是很明確的,在使用是得用declare -A array 操作是array數組具備這樣的特性。

Linux下shell數組

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.