天天看點

三、Shell中分支與循環結構

if結構的文法格式

單分支結構

雙分支結構

多分支結構

shell中的函數

  shell函數是shell腳本中由指令集和語句組成的代碼塊,這個代碼塊可以被其他腳本或是腳本中的其他部分調用,是以shell函數可以使程式子產品化,即把代碼分隔成獨立的任務塊,這樣,則不必每次為了執行相同的任務而重寫代碼。

定義函數的文法:

調用函數時;

  定義函數及函數體必須要在執行函數名前定義,shell的執行是從上到下執行的。

帶參數函數的執行方法:

 在函數體中位置參數($1、$2、$#、$*、$@)都可以是函數的參數

 父腳本的參數則臨時地被函數參數所掩蓋或隐藏

 $0比較特殊,仍然是父腳本的名稱

 當函數完成時,原來指令行參數會恢複

 在shell函數裡,return指令的功能與工作方式與exit相同,用于跳出函數

 在shell函數體裡面使用exit會終止整個shell腳本

 return語句會傳回一個退出值給調用的程式

case語句

循環語句

(1)for循環

清單生成方式:

  直接使用清單;

  使用檔案名通配的生成清單

  使用{}或seq指令生成數字序列使用指令生成

(2)循環

(3)while循環:适用于循環次數未知的場景,要有退出條件

(4)until循環語句 

(5)select循環

(6)死循環;腳本中讀取檔案的内容

循環控制語句:

指令

說明

break n

n 表示跳出循環的層數,如果省略n表示跳出整個循環

continue n

n表示退出到第n層繼續循環,如果省略n表示跳過本次循環,忽略本次循環的剩餘代碼,進入循環的下一次循環

exit n

退出目前的shell程式,n為傳回值。n也可以省略,在下一個shell裡通過$?接收這個n的值

return n

用于在函數裡,作為函數的傳回值,用于判斷函數執行是否正确

産生随機數的多種方法

1、通過系統環境變量($RANDOM)實作

2、通過openssl産生随機數

3、通過之間(date)獲得随機數

4、通過/dev/urandom配合cksum生成随機數

5、通過UUID生成随機數

6、使用expect附帶的mkpasswd生成随機數

腳本的調試模式

1)#/bin/bash -option script argument(腳本第一行)

  -n 文法檢查模式 

  -v vebose模式,列印shell讀取的所有語句

  -x  trace模式,列印執行替換操作後,腳本實際執行的指令

2)Set -x打開調試功能   

  set +x 關閉調試功能    (縮小調試範圍)

3) Shell内置僞信号:

  EXIT:從一個函數中退出或腳本結束    

  ERR:執行失敗

  DEBUG:腳本的每一條指令執行之前

捕捉信号:trap‘command’signal

數組的定義與操作

定義:array=(value1  value2  valve3 ...)array=($(ls))

數組長度:${#array[*]}${#array[@]}某元素中字元串長度:${#array[index]}

列印數組:${array[*]}${array[@]}

元素值:${array[n]}

指派:${array[n]}=value

數組删除:  unset array

元素删除:unset array[n]

本文轉自 夢想成大牛 51CTO部落格,原文連結:http://blog.51cto.com/yinsuifeng/1942764,如需轉載請自行聯系原作者