1、shell中的函數
[root@linux-01 aming]# cd /root/shell/aming
[root@linux-01 aming]# vim fun1.sh //須要注意函數名不能跟shell中的一些關鍵字衝突
#!/bin/bash
function inp(){
echo $1 $2 $3 $0 $#
}linux
inp 1 a 2
[root@linux-01 aming]# sh fun1.sh
1 a 2 fun1.sh 3 //$0是腳本名稱、3是參數個數shell
繼續改良腳本:
[root@linux-01 aming]# vim fun1.sh
#!/bin/bash
function inp(){
echo "The first par is $1"
echo "The second par is $2"
echo "The third par is $3"
echo "the scritp name is $0"
echo "the number of par is $#"
}vim
inp b a 2 3 adf
[root@linux-01 aming]# sh fun1.sh //執行腳本
The first par is b
The second par is a
The third par is 2
the scritp name is fun1.sh
the number of par is 5數組
修改腳本:
[root@linux-01 aming]# vim fun1.sh
#!/bin/bash
function inp(){
echo "The first par is $1"
echo "The second par is $2"
echo "The third par is $3"
echo "the scritp name is $0"
echo "the number of par is $#"
}bash
inp $1 $2 $3
[root@linux-01 aming]# sh fun1.sh 1 //假如這裏寫一個參數,查看運行結果
The first par is 1
The second par is
The third par is
the scritp name is fun1.sh
the number of par is 1
定義一個加法的函數,shell中定義的函數必須放到上面
[root@linux-01 aming]# vim fun2.sh
#!/bin/bash
sum() {
s=$[$1+$2] //s是一個變量,s=$1+$2
echo $s
}ide
sum 1 10 //求和1+10
[root@linux-01 aming]# sh fun2.sh //執行腳本
11
[root@linux-01 aming]# sh -x fun2.sh函數
read -p "Please input the eth name: " eth
ip $eth
[root@linux-01 aming]# sh -x fun3.sh //執行腳本學習
改進腳本:須要判斷輸入的網卡是否是系統中的網卡,若是網卡存在,IP不存在,如何判斷3d
ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.238.150 netmask 255.255.255.0 broadcast 192.168.238.255調試
[root@linux-01 aming]# ifconfig |grep -A1 "ens33: " //能夠找到兩塊網卡名稱不同的地方
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.238.128 netmask 255.255.255.0 broadcast 192.168.238.255
You have new mail in /var/spool/mail/root
[root@linux-01 aming]# ifconfig |grep -A1 "ens33: "|grep 'inet' //過濾出來inet這一行
inet 192.168.238.128 netmask 255.255.255.0 broadcast 192.168.238.255
[root@linux-01 aming]# ifconfig |grep -A1 "ens33: "|awk '/inet/ {print $2}' //使用這個命令過濾IP
192.168.238.128
[root@linux-01 aming]# ifconfig |grep -A1 "ens33: "|grep 'inet' |awk '{print $2}' //兩個命令均可以
192.168.238.128
寫shell腳本須要不斷的去調試,不斷的去尋求結果,達到預設,學習shell腳本必定要多練習,
2、shell中的數組
[root@linux-01 aming]# b=(1 2 3) //定義數組
[root@linux-01 aming]# echo ${b[@]} //獲取數組的元素個數,獲取整個數組
1 2 3
[root@linux-01 aming]# echo ${b[]}
1 2 3
[root@linux-01 aming]# echo ${b[0]} //方括號裏面的數字表示下標,表示元素是第幾個
1
[root@linux-01 aming]# echo ${#b[@]} //#表示一個個數
3
數組賦值
[root@linux-01 aming]# b[3]=a
[root@linux-01 aming]# echo ${b[]}
1 2 3 a
[root@linux-01 aming]# b[3]=aaa
[root@linux-01 aming]# echo ${b[]}
1 2 3 aaa
[root@linux-01 aming]# unset b[3] //數組的刪除
[root@linux-01 aming]# unset b
[root@linux-01 aming]# echo ${b[]} //把數組的值清空刪除
[root@linux-01 aming]# a=(seq 1 10
)
[root@linux-01 aming]# echo ${a[*]}
1 2 3 4 5 6 7 8 9 10
需求:截取4-7這四個數字,實際上是從第3個元素開始日後截取4個數字
echo ${a[@]:0:3}其中冒號做爲分隔符,0表示從第幾個元素開始,再冒號後面數字表示截取幾個
那麼上面的需求就能夠這樣這樣寫:
[root@linux-01 aming]# echo ${a[@]:3:4} //從第3個元素開始日後截取4個數字
4 5 6 7
[root@linux-01 aming]# echo ${a[@]:0-3:2} //從倒數第三個元素開始,截取2個數字
8 9
數組替換
[root@linux-01 aming]# echo ${a[@]/8/6} //把8修改成6
1 2 3 4 5 6 7 6 9 10
3、告警系統需求分析