Shell中的陣列

2021-06-16 20:55:18 字數 1750 閱讀 8160

一、陣列和字串

array[3] = "a b c" echo $array[1]  輸出b,

str=「a b c」 array = ($str) echo$array[1],同樣輸出b,要注意: array = ($str)中的右值的括號不能缺

上面這個就是我們常說的把字串放到乙個陣列中,也可以理解為動態陣列,比c和c++簡單多了

計算字串長度可用的三種方法:

echo 「$str」|awk ''

expr length 「$str」

echo 「$str」|wc -c

但是第三種得出的值會多1,可能是把結束符也計算在內了

判斷字串為空的方法有三種:

if [ "$str" =  "" ] 

if [ x"$str" = x ]

if [ -z "$str" ] 

二、其他型別的陣列

arr=(123 34 3 5) echo $arr,輸出123,在這裡等同於echo $;

echo $,輸出34,注意格式,除了首位址,必須要加上{},否則會出錯

三、陣列的長度和遍歷

length=$----陣列的長度,這裡的長度是最大下標

echo $-------輸出陣列全部元素

array[1]=5--------------向陣列的某個元素賦值和標c的語法一樣

echo $---輸出的是array[0]和array[1]的值

echo $-----輸出陣列第三個元素以後的值

echo $-----輸出陣列下標小於2的值

$ echo $ ----取得元素3的長度

unset array--------------清除array

array=------------------清空array,賦給array空值

遍歷字串方法一

for ((i=0;i<$;i++))

doecho $

done

遍歷字串方法二

str="a --m"

for i in $str

doecho $i

done

用while遍歷

len=$

i=0while [ $i -lt $len ]

doecho $

let i++

done

四、其他:

array[3] = "a b c"和array[3] = a b c這兩個是等價的;如果array[3] = "a "bc"",想要查詢",用awk是找不到的,單引號

是可以找到的,就是雙引號找不到;我們可以用擷取字串的方法來判斷是否雙引號,擷取的字串的方法如下:

$ 從左向右擷取最後乙個string後的字串

$從左向右擷取第乙個string後的字串

$從右向左擷取最後乙個string後的字串

$從右向左擷取第乙個string後的字串

將上面的string換成「即可,然後在判斷字串的長度,如果相等就是沒有,如果不相等就是有雙引號,不可以

用更改陣列分隔符的方法,那樣做無效,這個雙引號是shell內建的符號。

通用的awk查詢方法,例如:

find=`echo |awk 'begin'`;

也可以用math和index方法,例如:flag=`echo |awk ''` 

陣列預設的分隔符是空格,如果想改變預設的分隔符,用下面的方法

str="abd#ddd#ff";str2=($(echo $str|tr ''#''|tr -s ''));

Shell中的陣列

二維陣列 構造成這樣 a 1 2 3 4 5 6 7 8 9 然後操作的時候利用第i行j列的元素等於i len j,len是陣列的第二維度大小,這樣做有時候更簡單,但是就必須得控制一下邊界了,比如3 3的陣列,你可能初始化只給出8個元素。一 陣列和字串 array 3 a b c echo arra...

shell中的陣列

shell作為一門語言那肯定是不能缺少陣列了,下面記錄了shell中陣列的一些相關內容。bash 提供了一維陣列變數。任何變數都可以作為乙個陣列 內建命令 declare 可以顯式地定義陣列。陣列的大小沒有上限,也沒有限制在連續對成員引用和賦值時有什麼要求。陣列以整數為下標,從 0 開始。下面的示例...

Shell中的陣列

陣列元素的格式 array index index從0開始。定義陣列 在bash中定義陣列有兩種方法 1 直接在定義時為所有的陣列元素賦值 root localhost shell array 123 45 2 對陣列中每個陣列元素進行賦值 root localhost shell array 0 ...