Linux基礎 - shell數組
阿新 • • 發佈:2018-01-25
數組 刪除 one col 查找字符 evo 使用 分數 item 摘要
, 不會修改原數組;如需修改的數組,將結果使用“()”賦給新數組
數組的特性就是一組數據類型相同的集合,雖然shell是弱類型,但是我們也可以將其數組分為
數據類型的數組
和字符串類型的數組
兩類
shell的數組元素之間用空格
分隔開
數組操作
假設有以下兩個數組
array1=(1 2 3 4 5 6)
array2=("James" "Colin" "Harry")
- 數據變量名默認輸出
默認直接輸出變量的話,其輸出值默認為第一個元素的值,下標從0
開始
root@pts/1 $ echo $array1
1
root@pts/1 $ echo $array2
James
- 獲取數組元素
格式:${數組名[下標]}
,下標從0開始,下標為*
或@
代表整個數組內容
root@pts/1 $ echo ${array1[2]} 3 root@pts/1 $ echo ${array2[1]} Colin ## 獲取全部元素 root@pts/1 $ echo ${array2[*]} James Colin Harry root@pts/1 $ echo ${array2[@]} James Colin Harry
- 獲取數組長度
格式:${#數組名[*或@]}
root@pts/1 $ echo ${#array1[@]}
6
root@pts/1 $ echo ${#array2[*]}
3
- 數組遍歷
root@pts/1 $ for item in ${array2[@]} > do > echo "The name is ${item}" > done The name is James The name is Colin The name is Harry
- 數組元素賦值
格式:數組名[下標]=值
,如果下標不存在,則新增數組元素
; 下標已有,則覆蓋數組元素值
root@pts/1 $ array1[2]=18 root@pts/1 $ echo ${array1[*]} 1 2 18 4 5 6 root@pts/1 $ array2[4]="Betty" root@pts/1 $ echo ${array2[*]} James Colin Harry Betty
- 數組切片
格式:${數組名[*或@]:起始位:長度}
,截取部分數組,返回字符串,中間用空格分隔;將結果使用()
,則得到新的切片數組
root@pts/1 $ echo ${array2[*]}
James Colin Harry Betty
root@pts/1 $ echo ${array2[*]:1:3}
Colin Harry Betty
root@pts/1 $ array3=(${array2[*]:1:2})
ks-devops [~] 2018-01-25 20:30:16
root@pts/1 $ echo ${array3[@]}
Colin Harry
- 數組元素替換
格式:${數組名[*或@]/查找字符/替換字符}
root@pts/1 $ echo ${array2[*]}
James Colin Harry Betty
root@pts/1 $ echo ${array2[*]/Colin/Colin.Liu}
James Colin.Liu Harry Betty
root@pts/1 $ array4=(${array2[*]/Colin/Colin.liu})
root@pts/1 $ echo ${array4[*]}
James Colin.liu Harry Betty
- 刪除元素
格式:unset 數組
,清除整個數組; unset 數組[下標]
,清除單個元素
root@pts/1 $ echo ${array2[*]}
James Colin Harry Betty
root@pts/1 $ echo ${array4[*]}
James Colin.liu Harry Betty
root@pts/1 $ unset array4
root@pts/1 $ unset ${array2[3]}
root@pts/1 $ echo ${array2[*]}
James Colin Harry Betty
root@pts/1 $ echo ${array4[*]}
root@pts/1 $
Linux基礎 - shell數組