一、陣列和字串
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 ...