(1)shell不限制陣列的大小,陣列元素的下標從0開始計數
(2)獲取陣列中的元素要使用下標[ ],下標可以是乙個整數,也可以是乙個結果為整數的表示式,但是下標必須大於等於0
(3)bash shell只支援一維陣列,不支援多維陣列
在 shell 中,用括號( )
來表示陣列,陣列元素之間用空格來分隔。由此,定義陣列的一般形式為:array_name=(ele1 ele2 ele3 ... elen)
注意,賦值號=
兩邊不能有空格,必須緊挨著陣列名和陣列元素。
情形指令碼
解釋定義陣列
nums=(29 100 13 8 91 44)
echo $----->29 100 13 8 91 44
shell 是弱型別的,它並不要求所有陣列元素的型別必須相同
arr=(20 56 "")
第三個元素就是乙個「異類」,前面兩個元素都是整數,而第三個元素是字串。
shell 陣列的長度不是固定的,定義之後還可以增加元素
nums=(29 100 13 8 91 44)
nums[6]=88
echo $------>9 100 13 8 91 44 88
無需逐個元素地給陣列賦值,下面的**就是只給特定元素賦值:
ages=([3]=24 [5]=19 [10]=12)
以上**就只給第 3、5、10 個元素賦值,所以陣列長度是 3。
注意到雖然陣列長度是3,但是該陣列只在指定位置有真實值,其他位置的值都為空,即使下標位置越界,其值依然為空,不會報錯
獲取陣列元素的值,一般使用下面的格式:$,其中,array_name 是陣列名,index 是下標。
指令碼結果
#!/bin/bashnums=(135
7)echo
'輸出所有陣列元素:
'$echo
'輸出第2個元素:
'$nums[
5]=8
#給第5個元素賦值(此時會增加陣列長度)
echo
'輸出第3個元素:
'$echo
'輸出第4個元素:
'$echo
'輸出第5個元素:
'$echo
'輸出所有陣列元素:
'$
執行結果:
輸出所有陣列元素:1 3 5 7
輸出第2個元素:5
輸出第3個元素:7
輸出第4個元素:
輸出第5個元素:8
輸出所有陣列元素:1 3 5 7 8
$ 獲取陣列的第二個元素
$ $使用@
或*
可以獲取陣列中的所有元素
陣列長度,即陣列元素的個數,可以使用#
來獲取陣列元素的個數。
情形指令碼
結果使用#
來獲取陣列元素的個數$$
獲取指定下標位置的元素長度
獲取 arr 陣列的第 2 個元素(假設它是字串)的長度。
$字串長度的獲取方式$舉栗
#!/bin/bashnums=(135
7)echo
'輸出陣列的長度:
'$var1='
qwertyuiop
'echo
'字串長度:'$
nums[
8]=$
echo
'輸出陣列的長度:'$
echo
'第1個元素的長度:
'$echo
'第8個元素的長度:
'$unset nums[
1]#刪除元素
echo
'輸出陣列的長度:
'$
執行結果:
輸出陣列的長度:4
字串長度:10
輸出陣列的長度:5
第1個元素的長度:1
第8個元素的長度:10
輸出陣列的長度:4
所謂 shell 陣列拼接就是將兩個陣列連線成乙個陣列。
拼接陣列的思路是:先利用@
或*
,將陣列擴充套件成列表,然後再合併到一起。具體格式如下:
array_new=($ $)
array_new=($ $)
舉栗結果
#!/bin/basharr1=(12)
arr2=(qwer tyui)
array_new1=($ $)
array_new2=($ $)
echo $
echo $
執行結果:
1 2 qwer tyui
1 2 qwer tyui
情形指令碼
結果使用unset關鍵字來刪除陣列元素
unset array_name[index]
刪除整個陣列
unset array_name
舉栗#!/bin/bash
arr=(23 56 99 66 )
unset arr[1]
echo $
unset arr
echo $
執行結果:
23 99 66
注意最後的空行,它表示什麼也沒輸出,因為陣列被刪除了,所以輸出為空。
shell中的關聯陣列類似於python中字典的概念,關聯陣列也成為鍵值對陣列,鍵(key)即陣列的下標,值(value)即元素值。
6.1 建立關聯陣列
建立關聯陣列必須使用帶有-a
選項的 declare 命令
情形指令碼
新定義後賦值
declare -a people
color['num1']=xiaohong
color[num2]=xiaobai
color["num3"]=xiaohei
定義時同時賦值
declare -a people=(['num1']='xiaohong' [num2]='xiaobai' [num3]=xiaohei)
6.2 訪問關聯陣列元素
情形指令碼
結果獲取關聯陣列的元素值
$(array_name["index"])
echo $-----> xiaohong
獲取所有元素的下標$$
echo $----->xiaohong xiaobai xiaohei
echo $----->xiaohong xiaobai xiaohei
獲取所有元素的值$$
echo $-----> num1 num2 num3
echo $-----> num1 num2 num3
獲取關聯陣列長度
與獲取普通陣列長度的方式相同$$
echo $-----> 3
echo $-----> 3
舉栗
#!/bin/bashdeclare -a people=(['
num1
']='
xiaohong
' [num2]='
xiaobai
' [num3]=xiaohei)
echo
'聯合陣列的key值為:
'$echo
'聯合陣列元素值為:
'$echo
'聯合陣列的長度為:'$
echo
'迴圈列印聯合陣列的key值
'for item in $;do
echo
$done
echo
'迴圈列印聯合陣列的元素值
'for item in $;do
echo
$done
echo
'迴圈列印聯合陣列的鍵值對
'for item in $;do
echo $--\>$
done
執行結果:
1、定義 list1=(a b c)
2、獲取item個數: $ $
3、獲取某個item:$,$
4、轉換成以空格分隔各item的字串: str=$ str=$
5、把以空格分隔的字串轉換成list:str="a b c"; list1=($str); echo $;
實驗5 shell指令碼程式設計
專案 內容這個作業的課程在 這個作業的要求 學號 姓名 17041528 朱思皓 作業學習目標 1.了解shell指令碼的概念及使用 2.掌握shell指令碼語言的基本語法 3.學習簡單的shell指令碼程式設計 1.讓使用者輸入乙個字串,如果使用者輸入的是hello,請輸入hello 使用者姓名首...
複習 計算機基礎 5 shell 基礎
檢視檔案詳情和容量 m為單位 ls lh 許可權數值 r 4w 2 x 1 chmod改變檔案許可權 chmod r 連同子檔案一起改變 755644 744 找出你在的使用者組 groups mi 檢視mi是那個使用者組 id find find pathname options print ex...
嵌入式Linux學習5 Shell程式設計
shell 使用 1.shell簡介 簡單的說shell就是一種命令解析器,是一種程式設計互動介面,通過驅動作業系統核心完成指定的工作,它是使用者與作業系統之間的橋梁。分類 linux主流的shell有三種bash tcsh korn shell 這裡我學習的是bash 它是標準的uxin shel...