在Linux平臺上工做,咱們常常須要使用shell來編寫一些有用、有意義的腳本程序。有時,會常常使用shell數組。那麼,shell中的數組是怎麼表現的呢,又是怎麼定義的呢?接下來逐一的進行講解,shell中的數組。shell
何爲數組?學過計算機編程語言的同窗都知道,數組的特性就是一組數據類型相同的集合(不包括有一些編程語言提出來的關聯數組的概念)。那麼shell中數組是怎麼定義的呢,咱們來看兩種數據類型:一是數值類型,二是字符串類型;雖然shell自己是弱類型的,但也能夠這麼區分。編程
數值類型的數組:一對括號表示數組,數組中元素之間使用「空格」來隔開。數組
舉個列子: 編程語言
arr_number=(1 2 3 4 5);字符串
字符串類型數組:一樣,使用一對括號表示數組,其中數組中的元素使用雙引號或者單引號包含,一樣使用「空格」來隔開。string
arr_string=("abc" "edf" "sss"); 或者 arr_string=('abc' 'edf' 'sss');變量
咱們使用數值類型數組arr_number=(1 2 3 4 5)作爲源數組進行相關的講解:獲取數組長度,讀取某個下標的值,對某個下標賦值,刪除、分配和替換以及遍歷。提一個知識點,咱們在shell裏面想獲取某個變量的值,使用$符開頭,如:$a或者${a}便可。遍歷
獲取數組長度數據類型
arr_length=${#arr_number[*]}或${#arr_number[@]}都可,即形式:${#數組名[@/*]} 可獲得數組的長度。程序
讀取某個下標的值
arr_index2=${arr_number[2]},即形式:${數組名[下標]}
對某個下標賦值
這裏須要提出兩個問題:
第一個問題是若是該下標元素已經存在,會怎麼樣?
答:會修改該下標的值爲新的指定值。
例如:arr_number[2]=100,數組被修改成(1 2 100 4 5)
第二個問題是若是指定的下標已經超過當前數組的大小,如上述的arr_number的大小爲5,指定下標爲10或者11或者大於5的任意值會如何?
答:新賦的值被追加到數組的尾部。
例如:arr_number[13]=13,數組被修改成(1 2 100 4 5 13)
刪除操做
清除某個元素:unset arr_number[1],這裏清除下標爲1的數組;
清空整個數組:unset arr_number;
分片訪問
分片訪問形式爲:${數組名[@或*]:開始下標:結束下標},注意,不包括結束下標元素的值。
例如:${arr_number[@]:1:4},這裏分片訪問從下標爲1開始,元素個數爲4。
模式替換
形式爲:${數組名[@或*]/模式/新值}
例如:${arr_number[@]/2/98}
數組的遍歷
數組遍歷咱們使用for語句來演示:
for v in ${arr_number[@]}; do
echo $v;
done
經過上述,咱們講解了shell中數組的定義,已經對數組的相關操做有獲取長度,讀取某下標值,對某個下標賦值,刪除、分配和替換以及遍歷。經過上述的講解,但願可以給與讀者在Linux平臺中使用shell一些幫助,感謝讀者耐心的閱讀。