一、函数
调用函数前必须先定义,调用时仅使用函数名即可。
语法:
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.178linux.com/7280

