case語句支援的模式
a|b:a或者b
*:匹配任意長度的任意字元
?:匹配任意單個字元
[-]:範圍匹配
case語法格式
case 表示式 in
模式1)
條件1;; 模式2)
條件2;; 模式n)
條件n;; *)
剩餘條件
;; esac
bash指令碼函式
函式:function 實現可被呼叫模組
兩種返回值:
1.正常返回值
函式中的列印語句,如echo或print
最後一句執行成功
2.執行狀態返回值
取決於函式中執行的最後一條語句
自定義: return n
函式可以接受位置引數:
$1,$#,$0,$*,$@,$?
如果想把指令碼的全部位置引數,統統傳遞給指令碼中函式使用,怎麼辦?
使用$*傳遞
函式作用域
變數作用域:local==declare -i
函式體可以呼叫函式體 那麼函式體裡宣告變數
先內層函式體變數 在外層函式體變數 在主程式變數 在bash內建環境變數 如果沒有不會報錯 則為空顯示0
在函式中使用了在主程式中宣告的變數:重新賦值會影響主程式中的變數
如果不期望函式與主程式中的變數衝突,函式中使用變數都用local裝飾;即使用區域性變數
在函式中使用了序中在主程沒有宣告的變數:在函式執行結束後即被撤銷,無論是否使用local裝飾符
案例
[root@mm ~]#bash a.shh
10xy
20[root@mm ~]#cat a.shh
#!/bin/bash
declare -i a=10
built()
show()
echo $a(主程式變數)
built
show
函式語法
方法一
funcname()
方法二function funcname
案例
寫乙個指令碼,完成如下功能(使用函式):
1、提示使用者輸入乙個可執行命令;
2、獲取這個命令所依賴的所有庫檔案(使用ldd命令);
3、複製命令至/mnt/sysroot/對應的目錄中
解釋:假設,如果複製的是cat命令,其可執行程式的路徑是/bin/cat,那麼就要將/bin/cat複製到/mnt/sysroot/bin/目錄中,如果複製的是useradd命令,而useradd的可執行檔案路徑為/usr/sbin/useradd,那麼就要將其複製到/mnt/sysroot/usr/sbin/目錄中;
4、複製各庫檔案至/mnt/sysroot/對應的目錄中,其要求命令;
bash指令碼程式設計之case語句及指令碼選項高階
case語句及指令碼選項高階詳解 面向過程程式語言中的控制流 即程式當中的語句 預設是順序執行的。程式語言的控制結構一共有三類 1,順序結構 2,選擇結構 1 if語句 單分支的if語句 格式 if condition1 then expression fi 雙分支的if語句 格式 if condi...
Bash基礎 條件結構case
case word in pattern pattern command list esacbash在執行case結構前,會對word做 擴充套件,引數擴充套件,命令擴充套件,算術擴充套件和刪除引號 對pattern做 擴充套件,引數擴充套件,命令擴充套件和算術擴充套件 command list後的...
bash中case的用法
看到一些很實用的指令碼,由於之前對於bash指令碼的積累都比較離散,沒有乙個全面的了解,在這裡記錄一下 bash的case語句用法 case語句的語法規則是 case 變數名 in 模式1 命令序列1 模式2 命令序列2 預設執行的命令序列 esac 注意的是,case比較的是pattern,然後既...