日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Shell-06 函数

發布時間:2025/5/22 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Shell-06 函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Shell-06 函數

#編寫腳本,使用chkconfig命令,循環執行,關閉所有5級別服務

#!/bin/bash name=`chkconfig --list | cut -d' ' -f1`for i in [name];dochkconfig --level 5 $i offdonename=`chkconfig --list | awk '{print $1}'`for i in $name;doif chkconfig --list $i | grep "5:off" &> /dev/null;thenecho "這個$i服務已經關閉"elsechkconfig --level 5 $i offecho "這個$i服務已經關閉"fidone

1.函數介紹

為了避免代碼的重復使用,我們一般通過函數編寫代碼塊,而這個代碼塊用來實現某種功能。且這個功能在后面得代碼中,會重復調用;

Def

2.函數的格式

function

格式1:

????????????? Function fun_name{

???????????????????? 函數體

}

?????? Fun_name()

【不調用函數,則函數體中的命令是不會被執行的;在哪里調用,函數體中的命令就在那里執行】

格式2:

?????? Fun_name(){

????????????? 函數體

$1 $2…$10

}

Fun_name 1 2 3

:wq

Fun_name 4 5 6 7 8 9 10 11 12 13 14

?

1.Case PATTERN支持的格式:* 任意內容start|stop) a*)

?????? Case語句中的pattern支持文件通配符的

2.*)

?????? Echo “Usage:please input{start|stop|restart|status}”????

  • start)
  • if [ -e /var/lock/subsys/testd_name ] ;then

    ??????? echo “腳服務已啟動”

    else

    ??????? touch /var/lock/subsys/testd_name

    ??????? echo “服務啟動成功”

    fi

  • stop)
  • if [ -e /var/lock/subsys/testd_name ] ;then

    ??????? rm -f? /var/lock/subsys/testd_name

    ??????? echo “服務掛關閉成功”

    else

    ??????? echo “服務已關閉”

    fi

  • restart)
  • 【將前面的代碼寫成函數】

    ??? Start

    Stop

  • status
  • ?

    fun_start(){

    ??????? if [ -e /var/lock/subsys/testd_name ];then

    ??????????????? echo "服務已啟動"

    ??????? else

    ??????????????? touch /var/lock/subsys/testd_name

    ??????????????? echo "服務啟動成功"

    ??????? fi

    }

    fun_stop(){

    ??????? if [ -e /var/lock/subsys/testd_name ];then

    ??????????????? rm -f /var/lock/subsys/testd_name

    ??????????????? echo "服務關閉成功"

    ??????? else

    ??????????????? echo "服務已關閉"

    ??????? fi

    }

    fun_restart(){

    ??????? fun_stop

    ??????? fun_start

    }

    fun_status(){

    ??? ????if [ -e /var/lock/subsys/testd_name ];then

    ??????????????? echo "testd_name is running"

    ??????? else

    ??????????????? echo "testd_name is stopped"

    ??????? fi

    }

    fun_usage(){

    ???????? echo "Usage: please input{start|stop|restart|status}"

    }

    if [ $# -lt 1 ];then

    ??????? Usage

    ??????? exit 1

    fi

    case $1 in

    ??????? start)

    ??????????????? fun_start

    ??????????????? ;;

    ??????? stop)

    ??????????????? fun_stop

    ??????????????? ;;

    ??????? reatart)

    ??????????????? fun_restart

    ??????????????? ;;

    ??????? status)

    ??????????????? fun_status

    ??????????????? ;;

    ??????? *)

    ??????????????? fun_usage

    ??????????????? ;;

    esac

    ?

  • 函數返回值得問題
  • useradd_1(){for i in `seq 1 10` ;doif id user$i &> /dev/null;thenecho “user$i 存在”elseuseradd user$i &> /dev/nullecho “user$i OK”return 0fidone}useradd_1

    ?

    a)?????? 當函數中指定了判斷語句時,默認要返回一個錯誤結果,但是最近一條命令確實正確的,需要通過return來返回我們需要的正確的狀態碼。

    b)????? 函數結束的時候,我們需要指定一個return的正確返回碼;

    如果使用循環語句時,return會跳出循環

    Userdel -r 刪除用戶以及用戶家目錄

  • 函數接收參數
  • 函數 變量

    和普通命令一樣

    只需要注意,在接收參數的時候,不會使用外部的傳參,而是以腳本內部的參數為準

  • 函數的變量
  • 本地變量

    ????????????????????? Local 變量名=xxx

    ????????????????????? 本地變量只在本函數的內部生效

    局部變量

    ????????????????????? 腳本內部的變量

    環境變量

    ????????????????????? 在整個Linux系統的bash中生效

    i=1

    TEST(){

    ??????? Local i=9

    ??????? Let i++

    ??????? Echo i

    ??????? Exit 0

    }

    TEST

    Echo i

    擴展:關于腳本執行的問題

    a)?????? bash的方式來執行

    bash所執行的腳本中定義的變量,在當前shell的子shell中

    b)????? 通過全路徑或者相對路徑的方式來執行-------#!/bin/bash 需要授權執行權限;

    c)?????? Source腳本文件或者.腳本文件

    Source這種方式來執行腳本的時候,內部變量所定義的值是在當前的shell中的

  • 函數遞歸
  • 你 站在鏡子的前面,后面又有一面鏡子

    n的階乘n!=n*(n-1)!(n-1)!=(n-1)*(n-2)!fun(){if [ $1 -le 1 ];thenecho 1elseq=$[$1*$(fun$[$1-1])]echo $qfi}fun 5

    ?

    ?

    ?

    兔子數列,斐波那契數列

    1+1=2? 1+2=3 2+3=5 3+5=8

    1 1 2 3 5 8 13 21 34….

    Fn = F(n-1)+F(n-2)

    ?

    轉載于:https://www.cnblogs.com/KAJIA1/p/11392371.html

    總結

    以上是生活随笔為你收集整理的Shell-06 函数的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。