二、shell陣列
三、指令碼除錯
function
name()
呼叫 shell 函式時可以給它傳遞引數,也可以不傳遞。如果不傳遞引數,直接給出函式名字即可:
name
如果傳遞引數,那麼多個引數之間以空格分隔:
name
param1
param2
param3
1.定義乙個函式,輸出 乙個**:
#!/bin/bash
#函式定義
function
url()#
函式呼叫
url
執行結果:
你可以將呼叫放在定義的前面,也就是寫成下面的形式:
#!/bin/bash
#函式呼叫
url#
函式定義
function
url(
)
2.定義乙個函式,計算所有引數的和:
#!/bin/bash
function
getsum()
getsum
1020
5515
#呼叫函式並傳遞引數
echo
$?
執行結果:
100
#!/bin/bash
#filename:function2.sh
factorial()
if[-z$
1]then
echo
"need one parameter"
;exit1;
fifactorial$1
;echo
$rtn
;
2.shell遍歷目錄
#!/bin/bassh
#filename:foriin
lsforiin
"(ls -l $1)"
doecho$i#
這裡獲取檔名或者資料夾名,然後可以完成其它操作
done
$
其中,array_name 是陣列名,index 是下標。例如:n=$
$
$
兩者都可以得到 nums 陣列的所有元素。
#!/bin/bash
nums=(
29100138
9144
)echo$#
輸出所有陣列元素
nums[10
]=66#給第
10個元素賦值(此時會增加陣列長度)
echo$#
輸出所有陣列元素
echo$#
輸出第4
個元素執行結果:
29100138
9144
29100138
9144
6691
a=(
1234
)echo$1
2
a=(
1234
)echo$1
8834
刪除陣列:unset
a刪除陣列中的元素:unseta[
2]echo$1
34
將1-100的奇數輸出為陣列
#!/bin/bash#1
-100
奇數陣列
#for((
i=0;
i<=49
;i++
))#do
#arr[$i
]=$[
2*i+
1]#done
#echo
$
將陣列內60以下的元素刪除
#!/bin/bash
read
-p"請輸入元素:"
-alisti=
0#list=(
9055
1710
8899
3314
)forjin
$;doif[$j
-lt60];
then
unset
list[$i
] fi
leti++
done
echo
"$"
語法:sh -nvx 指令碼名
展示指令碼
[
root@localhost aa]#
bash
-nvx
oushuhe#!
/bin
/bash
sum=
0for((
i=0;
i<
=100;i
+=2)
)doletsum+=
$iecho
"$i"
done
echo
"$sum"
set -x :開啟調節模式
set +x:關閉調節模式
[
root@localhost aa]#
vimoushuhe#!
/bin
/bash
set-x##
除錯語句
sum=
0for((
i=0;
i<=30
;i+=
2))do
letsum+=
$iecho
"$i"
done
echo
"$sum"
輸出內容為:
+sum=0
+((i
=0))
+((i
<=30
))+let
sum+=0
+echo00
+((i
+=2)
)+((
i<=30
))+let
sum+=2
+echo22
+((i
+=2)
)+((
i<=30
))+let
sum+=4
+echo44
+((i
+=2)
)+((
i<=30
))+let
sum+=6
+echo66
+((i
+=2)
)+((
i<=30
))+let
sum+=8
+echo88
+((i
+=2)
)+((
i<=30
))+let
sum+=10
+echo
1010+(
(i+=
2))+
((i<=30
))+let
sum+=12
+echo
1212+(
(i+=
2))+
((i<=30
))+let
sum+=14
+echo
1414+(
(i+=
2))+
((i<=30
))+let
sum+=16
+echo
1616+(
(i+=
2))+
((i<=30
))+let
sum+=18
+echo
1818+(
(i+=
2))+
((i<=30
))+let
sum+=20
+echo
2020+(
(i+=
2))+
((i<=30
))+let
sum+=22
+echo
2222+(
(i+=
2))+
((i<=30
))+let
sum+=24
+echo
2424+(
(i+=
2))+
((i<=30
))+let
sum+=26
+echo
2626+(
(i+=
2))+
((i<=30
))+let
sum+=28
+echo
2828+(
(i+=
2))+
((i<=30
))+let
sum+=30
+echo
3030+(
(i+=
2))+
((i<=30
))+echo
240240
##輸出的結果,上面為每一步的實驗
shell指令碼基礎語法(if 和 陣列)
條件判斷命令 test 或者 例 test 1 lt 4 判斷1 4 test語句的等價形式 1 lt 4 檔案測試符號 f 存在且是普通檔案 d 存在且是目錄 s 存在且位元組數大於0 r 存在且可讀 w 存在且可寫 x 存在且可執行 如 test d mydoc 判斷mydoc是否是目錄例子 1...
shell指令碼之函式和陣列(含案例,適合新手練習)
1.3 shell函式應用 二 陣列 function 函式名 bin bash read p 請輸入兩個整數 shu 1 shu 2 function sqrt sqrt shu 1 shu 2基本格式 陣列名 value0 value1 value2.基本格式 陣列名 0 value 1 val...
shell中的函式和陣列
shell指令碼中的函式 函式就是把一段 整理到了乙個小單元中,並給這個小單元起乙個名字,當用到這段 時直接呼叫這個小單元的名字即可。格式 function f name 函式必須要放在最前面 示例1 bin bash input input 1 a b 示例2 bin bash sum sum 1...