shell數組定義和操作

這是某天晚上自己閒來沒事學習solr的時候忽然看見數組的定義,想轉發一個比較詳細的數組操作。

 

1.數組定義

 

 a=(1 2 3 4 5)
 echo $a

一對括號表示是數組,數組元素用“空格”符號分割開。

 

2.數組讀取與賦值

  • 得到長度

 echo ${#a[@]}
5

用${#數組名[@或*]} 可以得到數組長度

  • 讀取

echo ${a[2]} 
3

echo ${a[*]} 
1 2 3 4 5   

用${數組名[下標]} 下標是從0開始  下標是:*或者@ 得到整個數組內容

  • 賦值:

 a[1]=100

echo ${a[*]} 
1 100 3 4 5

 

 a[5]=100     

 echo ${a[*]}

1 100 3 4 5 100

直接通過 數組名[下標] 就可以對其進行引用賦值,如果下標不存在,自動添加新一個數組元素

  • 刪除:

a=(1 2 3 4 5)
 unset a
 echo ${a[*]}

 a=(1 2 3 4 5)
unset a[1]   
 echo ${a[*]} 
1 3 4 5
echo ${#a[*]}
4

直接通過:unset 數組[下標] 可以清除相應的元素,不帶下標,清除整個數據。

 

 

3.特殊使用

  • 分片:

 a=(1 2 3 4 5)
 echo ${a[@]:0:3}
1 2 3
 echo ${a[@]:1:4}
2 3 4 5

 c=(${a[@]:1:4})
 echo ${#c[@]}
4
 echo ${c[*]} 
2 3 4 5

直接通過 ${數組名[@或*]:起始位置:長度} 切片原先數組,返回是字符串,中間用“空格”分開,因此如果加上”()”,將得到切片數組,上面例子:c 就是一個新數據。

  • 替換:

 a=(1 2 3 4 5)    
 echo ${a[@]/3/100}
1 2 100 4 5
 echo ${a[@]}
1 2 3 4 5
 a=(${a[@]/3/100}) 
 echo ${a[@]}     
1 2 100 4 5

調用方法是:${數組名[@或*]/查找字符/替換字符} 該操作不會改變原先數組內容,如果需要修改,可以看上面例子,重新定義數據。

從上面講到的,大家可以發現linux shell 的數組已經很強大了,常見的操作已經綽綽有餘



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