bash腳本case與函數

case語句支持的模式編程

a|b:a或者b
*:匹配任意長度的任意字符
?:匹配任意單個字符
[-]:範圍匹配

case語法格式bash

case 表達式 in 
 模式1)
 條件1
 ;;
 模式2)
 條件2
 ;;
 模式n)
 條件n
 ;;
 *)
 剩餘條件
 ;;
 esac

bash腳本函數網絡

函數:function 實現可被調用模塊
兩種返回值:
    1.正常返回值
    函數中的打印語句,如echo或print
    最後一句執行成功
    2.執行狀態返回值
    取決於函數中執行的最後一條語句
    自定義: return N

函數能夠接受位置參數:函數

$1,$#,$0,$*,$@,$?
若是想把腳本的所有位置參數,通通傳遞給腳本中函數使用,怎麼辦?
    使用$*傳遞

函數做用域ui

變量做用域:local==declare -i
    函數體能夠調用函數體 那麼函數體裏聲明變量
    先內層函數體變量 在外層函數體變量 在主程序變量  在bash內置環境變量  若是沒有不會報錯 則爲空顯示0
    在函數中使用了在主程序中聲明的變量:從新賦值會影響主程序中的變量
    若是不指望函數與主程序中的變量衝突,函數中使用變量都用local裝飾;即便用局部變量
    在函數中使用了序中在主程沒有聲明的變量:在函數執行結束後即被撤銷,不管是否使用local裝飾符

案例spa

[root@mm ~]#bash a.shh
10
xy
20
[root@mm ~]#cat a.shh
#!/bin/bash
declare -i A=10
built() {
declare A=xy
echo $A
}
show() {
declare -i A=20(若是這行註釋掉show函數塊爲10)
echo $A
}
echo $A(主程序變量)   
built
show

函數語法code

方法一
FuncName(){
函數體
 }
方法二
function FuncName{
函數體
}

案例blog

寫一個腳本,斷定172.16.0.0網絡內有哪些主機在線,在線的用綠色顯示,不在線的用紅色顯示;要求,編程中使用函數;

圖片描述

寫一個腳本,完成以下功能(使用函數):
一、提示用戶輸入一個可執行命令;
二、獲取這個命令所依賴的全部庫文件(使用ldd命令);
三、複製命令至/mnt/sysroot/對應的目錄中
解釋:假設,若是複製的是cat命令,其可執行程序的路徑是/bin/cat,那麼就要將/bin/cat複製到/mnt/sysroot/bin/目錄中,若是複製的是useradd命令,而useradd的可執行文件路徑爲/usr/sbin/useradd,那麼就要將其複製到/mnt/sysroot/usr/sbin/目錄中;
四、複製各庫文件至/mnt/sysroot/對應的目錄中,其要求命令;

圖片描述

相關文章
相關標籤/搜索