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/對應的目錄中,其要求命令;