shell中的函數、shell中的數組

shell中的函數

函數就是把一段代碼整理到一個小單元中,並給這個小單元起一個名字,當用到這段代碼時直接調用這個小單元的名字便可shell

函數的做用:
1,一個腳本里有多行,會反覆執行某個代碼段。因而就能夠把這段代碼包裝起來。方便執行。
2,把功能性代碼包裝後,提高易讀性與美觀。
注意不要爲了寫函數去寫函數,明確目的性很關鍵。數組

函數的格式

funtion f_name()  
{  
   command  
}

這就定義了一個函數。
f_name就是函數的名稱
能夠在後邊的內容中直接調用。bash

示例1:

#!/bin/bash  
input()
{
 echo $1 $2 $# $0
}
input 1 a b

執行這個腳本顯示的結果:
1 a 3 腳本名稱
其中函數中的$1和$2表示函數的第一個和第二個參數
$#表示顯示這個函數一共有多少個參數
$0表示腳本名稱。函數

示例2:

#!/bin/bash
sum()
{
  s=$[$1+$2]
  echo $s
}
sum 1 2

將sum的第一個和第二個參數相加。並顯示其結果。
$[]會顯示括號內計算的值。spa

示例3:

#!/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

shell中的數組

定義數組

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命令中的查找替換相似第一個/後是源第二個/後是目標。

相關文章
相關標籤/搜索