函數就是把一段代碼整理到一個小單元中,並給這個小單元起一個名字,當用到這段代碼時直接調用這個小單元的名字便可shell
函數的做用:
1,一個腳本里有多行,會反覆執行某個代碼段。因而就能夠把這段代碼包裝起來。方便執行。
2,把功能性代碼包裝後,提高易讀性與美觀。
注意不要爲了寫函數去寫函數,明確目的性很關鍵。數組
funtion f_name() { command }
這就定義了一個函數。
f_name就是函數的名稱
能夠在後邊的內容中直接調用。bash
#!/bin/bash input() { echo $1 $2 $# $0 } input 1 a b
執行這個腳本顯示的結果:
1 a 3 腳本名稱
其中函數中的$1和$2表示函數的第一個和第二個參數
$#表示顯示這個函數一共有多少個參數
$0表示腳本名稱。函數
#!/bin/bash sum() { s=$[$1+$2] echo $s } sum 1 2
將sum的第一個和第二個參數相加。並顯示其結果。
$[]會顯示括號內計算的值。spa
#!/bin/bash ip() { ifconfig |grep -A1 "$1: " |tail -1 |awk '{print $2}' } read -p "Please input the eth name: " e myip=`ip $e` echo "$e address is $myip"
首先這個腳本定義了ip這個函數的內容是顯示ifconfig的「函數參數1」的ip值(具體方法參考正則三劍客)。
而後提示輸入網卡名稱。
myip賦的值爲ip這個函數執行參數1爲$e的結果。
顯示輸入的網卡名 網卡地址 變量myip的值。code
a=(1 2 3 4 5)ip
echo ${a[@]}
echo ${#a[@]} 獲取數組的元素總個數
echo ${a[2]} 讀取第三個元素,數組從0開始
echo ${a[*]} 等同於 ${a[@]} 顯示整個數組input
a[1]=100; echo ${a[@]}
a[5]=2; echo ${a[@]}io
若是下標不存在則會自動添加一個元素
若是下標的個數沒有接着元素個數,好比一共有五個元素,直接給第九個元素賦值。
也是能夠的,但不會自動填充中間的元素。
顯示時會將其顯示爲第六個元素,調用時仍是按照第九個元素調用。awk
unset a #清空數組的內容
unset a[1] #刪除數組內的第二個元素
a=(
seq 1 5
)
echo ${a[@]:0:3} 從第一個元素開始,截取3個
echo ${a[@]:1:4} 從第二個元素開始,截取4個
echo ${a[@]:0-3:2} 從倒數第3個元素開始,截取2個
echo ${a[@]/3/100} #顯示時臨時替換 a=(${a[@]/3/100}) #永久替換 和vi命令中的查找替換相似第一個/後是源第二個/後是目標。