linux shell在程式設計方面比windows批處理強大很多,無論是在迴圈、運算。
bash支援一維陣列(不支援多維陣列),並且沒有限定陣列的大小。類似與c語言,陣列元素的下標由0開始編號。獲取陣列中的元素要利用下標,下標可以是整數或算術表示式,其值應大於或等於0。
定義陣列
在shell中,用括號來表示陣列,陣列元素用「空格」符號分割開。定義陣列的一般形式為:
複製** **如下:
陣列名=(值1 值2 ... 值n)
例如:複製**
**如下:
array_name=(value0 value1 value2
value3)
或者 複製**
**如下:
array_name=(
value0
value1
value2
value3
)還可以單獨定義陣列的各個分量:
複製**
**如下:
array_name[0]=value0
array_name[1]=value1
array_name[n]=valuen
可以不使用連續的下標,而且下標的範圍沒有限制。
讀取陣列
讀取陣列元素值的一般格式是:
複製**
**如下:
$例如:
複製**
**如下:
valuen=$
使用@符號可以獲取陣列中的所有元素,例如:
複製**
**如下:
echo $
獲取陣列的長度
獲取陣列長度的方法與獲取字串長度的方法相同,例如:
複製**
**如下:
# 取得陣列元素的個數
length=$
# 或者
length=$
# 取得陣列單個元素的長度
lengthn=$
附:shell陣列小結
不知道
(傾訴)
陣列作為一種特殊的資料結構在任何一種程式語言中都有它的一席之地,當然bash
shell也不例外。本文就shell陣列來做乙個小的總結。
在這裡只討論一維陣列的情況,關於多維陣列(事實上,你得用一維陣列的方法來模擬),不涉及。這裡包括陣列的複製,計算,刪除,替換。
陣列的宣告:
複製**
**如下:
array[key]=value # array[0]=one,array[1]=two
declare -a array # array被當作陣列名
array=( value1 value2 value3 ... )
array=( [1]=one [2]=two [3]=three ... )
array="one two three" # echo
$,把array變數當作陣列來處理,但陣列元素只有字串本身
陣列的訪問:
複製**
**如下:
$ # $
陣列的刪除
複製**
**如下:
unset array[1] # 刪除陣列中第乙個元素
unset array # 刪除整個陣列
計算陣列的長度:
複製**
**如下:
$$ #同上。 $ 、$。注意同#的區別
陣列的提取
從尾部開始提取:
複製**
**如下:
array=( [0]=one [1]=two [2]=three [3]=four
)$ # two three
four,除掉第乙個元素後所有元素,那麼$表示所有元素
$ # one
two$ # two three
子串刪除
複製**
**如下:
[root@localhost dev]# echo
$one two three four
[root@localhost dev]# echo $ #
左邊開始最短的匹配:"t*e",這將匹配到"thre"
one two e four
[root@localhost dev]# echo $ # 左邊開始最長的匹配,這將匹配到"three"
[root@localhost dev]# array=( [0]=one [1]=two [2]=three [3]=four )
[root@localhost dev]# echo $ # 從字串的結尾開始最短的匹配
one tw three
four
[root@localhost dev]# echo $ # 從字串的結尾開始最長的匹配
one tw three
four
子串替換
複製**
**如下:
[root@localhost dev]# array=( [0]=one [1]=two
[2]=three [3]=four )
第乙個匹配到的,會被刪除
複製**
**如下:
[root@localhost dev]# echo $
mne twm three fmur
所有匹配到的,都會被刪除
複製**
**如下:
[root@localhost dev]# echo $
mne twm three fmur
沒有指定替換子串,則刪除匹配到的子符
複製**
**如下:
[root@localhost dev]# echo $
ne tw three fur
替換字串前端子串
複製**
**如下:
[root@localhost dev]# echo $
kne two three four
替換字串後端子串
複製**
**如下:
[root@localhost dev]# echo $
one twk three four
1、 for((i=1;i<=10;i++));do echo $(expr $i \* 4);done
2、在shell中常用的是 for i in $(seq 10)
3、for i in `ls`
幾個不同的方法來實現輸出1-100間可以被3整除的數
1.用(())
#!/bin/bash
clear for((i=1;i<100;i++))
for do if((i%3==0))
then
echo $i
continue
fi done
順序 迴圈 選擇結構例項
if結構流程圖 巢狀if控制語句 public static void main string args else else else while和do while迴圈結構 for迴圈結構 跳轉語句 break語句 跳出迴圈。public static void main string args i...
順序結構 選擇結構 迴圈結構
三種基本結構 順序結構 選擇結構和迴圈結構 1 順序結構 計算機執行程式的步驟是從上到下依次執行 2 選擇結構 條件控制語句 1 if語句 2 if else語句 3 條件表示式 a b a b c語言中唯一的三目運算子 判斷a是否大於b 如果成立,則返回a,否則返回b 4 switch語句 例 s...
順序結構 選擇結構 迴圈結構
1 能夠理解順序結構 按照 的先後順序,依次執行,即為順序結構 2 能夠使用if語句第一種格式 if 關係表示式 3 能夠使用if語句第二種格式 if 關係表示式 else 可使用三目運算子替代 a b?a b 4 能夠使用if語句第三種格式 if 關係表示式1 else if 關係表示式2 els...