Linux基礎(chǔ) - shell數(shù)組

摘要

數(shù)組的特性就是一組數(shù)據(jù)類型相同的集合,雖然shell是弱類型,但是我們也可以將其數(shù)組分為數(shù)據(jù)類型的數(shù)組字符串類型的數(shù)組兩類
shell的數(shù)組元素之間用空格分隔開


數(shù)組操作

假設(shè)有以下兩個(gè)數(shù)組

array1=(1 2 3 4 5 6)
array2=("James" "Colin" "Harry")
  • 數(shù)據(jù)變量名默認(rèn)輸出
    默認(rèn)直接輸出變量的話,其輸出值默認(rèn)為第一個(gè)元素的值,下標(biāo)從0開始
root@pts/1 $ echo $array1
1
root@pts/1 $ echo $array2
James
  • 獲取數(shù)組元素
    格式:${數(shù)組名[下標(biāo)]},下標(biāo)從0開始,下標(biāo)為*@代表整個(gè)數(shù)組內(nèi)容
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
  • 獲取數(shù)組長度
    格式:${#數(shù)組名[*或@]}
root@pts/1 $ echo ${#array1[@]}
6
root@pts/1 $ echo ${#array2[*]}
3
  • 數(shù)組遍歷
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
  • 數(shù)組元素賦值

格式:數(shù)組名[下標(biāo)]=值,如果下標(biāo)不存在,則新增數(shù)組元素; 下標(biāo)已有,則覆蓋數(shù)組元素值

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
  • 數(shù)組切片

格式:${數(shù)組名[*或@]:起始位:長度},截取部分?jǐn)?shù)組,返回字符串,中間用空格分隔;將結(jié)果使用(),則得到新的切片數(shù)組

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
  • 數(shù)組元素替換

格式:${數(shù)組名[*或@]/查找字符/替換字符}, 不會(huì)修改原數(shù)組;如需修改的數(shù)組,將結(jié)果使用“()”賦給新數(shù)組

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 數(shù)組,清除整個(gè)數(shù)組;
unset 數(shù)組[下標(biāo)],清除單個(gè)元素

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 $
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 4,196評(píng)論 1 10
  • 來源:NumPy Tutorial - TutorialsPoint 譯者:飛龍 協(xié)議:CC BY-NC-SA 4...
    布客飛龍閱讀 33,562評(píng)論 6 97
  • 數(shù)組在程序設(shè)計(jì)中,為了處理方便, 把具有相同類型的若干變量按有序的形式組織起來。這些按序排列的同類數(shù)據(jù)元素的集合稱...
    朱森閱讀 4,271評(píng)論 2 13
  • 上周五接到我媽電話,說她腰病復(fù)發(fā),腰很疼,讓我回來照顧。當(dāng)時(shí)我一聽就心慌了,擔(dān)心的吃不下飯,睡不著覺,失眠到后半夜...
    躺平專家閱讀 3,012評(píng)論 44 77
  • 前言:最近的目標(biāo)就是跳槽,跳槽完再搭個(gè)站,這樣的話生活就充實(shí)一點(diǎn)點(diǎn)了吧。 今天說的AsyncTask也是項(xiàng)目中常常...
    黑白咖閱讀 682評(píng)論 0 3

友情鏈接更多精彩內(nèi)容