一、函數
調用函數前必須先定義,調用時僅使用函數名即可。
語法: function 函數名 { 函數體 } 也可表示為: 函數名 () { 函數體 }
示例:寫一個腳本,判定網絡內有哪些主機在線,在線的用綠色顯示,不在線的用紅示表示:
c_net () { for i in {1..254}; do ping -c1 -W1 ${1}.${i} &> /dev/null if [ $? -eq 0 ]; then echo -e "\e[0;32;1m${1}.${i}\e[0m is up" else echo -e "\e[0;31;1m${1}.${i}\e[0m is down" fi done } b_net () { for j in {0..255}; do c_net $1.$j done } a_net () { for k in {0..255}; do b_net $1.$k done } trap 'echo quit; exit 1' SIGINT read -p "PLS enter a network segment: " network_seg net_type=$(echo ${network_seg} | awk -F . '{print $1}') if [ ${net_type} -gt 0 -a ${net_type} -lt 127 ]; then a_net $(echo ${network_seg} | cut -d. -f1) elif [ ${net_type} -gt 127 -a ${net_type} -lt 192 ]; then b_net $(echo ${network_seg} | cut -d. -f1-2) elif [ ${net_type} -ge 192 -a ${net_type} -le 223 ]; then c_net $(echo ${network_seg} | cut -d. -f1-3) else echo " usag: 0.0.0.0-223.0.0.0 " fi
二、case選擇語句
case 變量引用 in pattern1) 分支1 ;; pattern2) 分支2 ;; ... *) 分支n ;; esac
說明:
case行尾必須是單詞”in“,每一個模式以右括號”)“結束 ,分支為所需執行的命令操作,每一個分支以雙分號”;;“結束。模式匹配中可以使用中括號“[ ]”表示 一個連續的范圍,如[a-z]、[0-9]等;也可使用豎杠“|”表示“或”。
示例:執行腳本,循環提示輸入字符,并判斷大小寫、數字、特殊字符,輸入exit則退出循環。
原創文章,作者:老鼠上了貓,如若轉載,請注明出處:http://www.www58058.com/7280