shell中的函數 shell中的數組 警示系統需求分析

來源:互聯網
上載者:User

標籤:系統   使用   輸入   ica   變數   元素   com   替換   png   

一、shell中的函數

[[email protected] aming]# cd /root/shell/aming
[[email protected] aming]# vim fun1.sh //需要注意函數名不能跟shell中的一些關鍵字衝突
#!/bin/bash
function inp(){
echo $1 $2 $3 $0 $#
}

inp 1 a 2
[[email protected] aming]# sh fun1.sh
1 a 2 fun1.sh 3 //$0是指令碼名稱、3是參數個數

繼續改良指令碼:
[[email protected] 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 $#"
}

inp b a 2 3 adf
[[email protected] 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

修改指令碼:
[[email protected] 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 $#"
}

inp $1 $2 $3
[[email protected] 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中定義的函數必須放到上面
[[email protected] aming]# vim fun2.sh
#!/bin/bash
sum() {
s=$[$1+$2] //s是一個變數,s=$1+$2
echo $s
}

sum 1 10 //求和1+10
[[email protected] aming]# sh fun2.sh //執行指令碼
11
[[email protected] aming]# sh -x fun2.sh

  • sum 1 10
  • s=11
  • echo 11
    11

    這個函數是專門用來顯示IP的
    [[email protected] aming]# vim fun3.sh
    #!/bin/bash
    ip()
    {
    ifconfig |grep -A1 "$1: "|awk ‘/inet/ {print $2}‘
    }

read -p "Please input the eth name: " eth
ip $eth
[[email protected] aming]# sh -x fun3.sh //執行指令碼

  • read -p ‘Please input the eth name: ‘ eth
    Please input the eth name: ens33:0 //輸入$1參數
  • ip ens33:0
  • ifconfig
  • grep -A1 ‘ens33:0: ‘
  • awk ‘/inet/ {print $2}‘
    192.168.238.150 //得到ens33:0網卡的IP

改進指令碼:需要判斷輸入的網卡是不是系統中的網卡,如果網卡存在,IP不存在,如何判斷

我們現在的需求是看ens33這塊網卡的IP資訊:
[[email protected] aming]# ifconfig |grep -A1 "ens33" //-A1表示顯示關鍵詞,包括下面的一行,但是它看到的是兩塊網卡的資訊,包括了虛擬網卡資訊,繼續讓它只顯示ens33網卡IP
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.238.128 netmask 255.255.255.0 broadcast 192.168.238.255

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

[[email protected] 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
[[email protected] aming]# ifconfig |grep -A1 "ens33: "|grep ‘inet‘ //過濾出來inet這一行
inet 192.168.238.128 netmask 255.255.255.0 broadcast 192.168.238.255
[[email protected] aming]# ifconfig |grep -A1 "ens33: "|awk ‘/inet/ {print $2}‘ //使用這個命令過濾IP
192.168.238.128
[[email protected] aming]# ifconfig |grep -A1 "ens33: "|grep ‘inet‘ |awk ‘{print $2}‘ //兩個命令都可以
192.168.238.128
寫shell指令碼需要不斷的去調試,不斷的去尋求結果,達到預設,學習shell指令碼一定要多練習,

二、shell中的數組

[[email protected] aming]# b=(1 2 3) //定義數組
[[email protected] aming]# echo ${b[@]} //擷取數組的元素個數,擷取整個數組
1 2 3
[[email protected] aming]# echo ${b[]}
1 2 3
[[email protected] aming]# echo ${b[0]} //方括弧裡面的數字表示下標,表示元素是第幾個
1
[[email protected] aming]# echo ${#b[@]} //#表示一個個數
3
數組賦值
[[email protected] aming]# b[3]=a
[[email protected] aming]# echo ${b[
]}
1 2 3 a
[[email protected] aming]# b[3]=aaa
[[email protected] aming]# echo ${b[]}
1 2 3 aaa
[[email protected] aming]# unset b[3] //數組的刪除
[[email protected] aming]# unset b
[[email protected] aming]# echo ${b[
]} //把數組的值清空刪除

[[email protected] aming]# a=(seq 1 10)
[[email protected] aming]# echo ${a[*]}
1 2 3 4 5 6 7 8 9 10
需求:截取4-7這四個數字,其實是從第3個元素開始往後截取4個數字
echo ${a[@]:0:3}其中冒號作為分隔字元,0表示從第幾個元素開始,再冒號後面數字表示截取幾個
那麼上面的需求就可以這樣這樣寫:
[[email protected] aming]# echo ${a[@]:3:4} //從第3個元素開始往後截取4個數字
4 5 6 7
[[email protected] aming]# echo ${a[@]:0-3:2} //從倒數第三個元素開始,截取2個數字
8 9

數組替換
[[email protected] aming]# echo ${a[@]/8/6} //把8修改為6
1 2 3 4 5 6 7 6 9 10

三、警示系統需求分析

shell中的函數 shell中的數組 警示系統需求分析

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.