shell脚本编程之函数、case语句

一、函数

调用函数前必须先定义,调用时仅使用函数名即可。

语法:
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则退出循环。

1.png

原创文章,作者:老鼠上了猫,如若转载,请注明出处:http://www.178linux.com/7280

(0)
上一篇 2015-08-24 21:46
下一篇 2015-08-24 21:49

相关推荐

  • sed的用法小结

    sed的用法小结 sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等sed [OPTION]… ‘script’ [input-file] … OPTION: -n 不输出模式空间中的内容至屏幕,仅显示script处理后的结果 -e 多点编辑,eg: ~]# sed -e ‘s@^#[[…

    Linux干货 2017-08-22
  • 7 文件系统权限(二):权限

    rwx, chmod, chgrp, chown, SUID, SGID, Sticky, chattr, lsattr, umask, ACL, setfacl, getfacl 权限 假设这样几个场景:     1) A用户在/testdir目录中创建了A.txt文件,B用户是否可以删除、修改、移动、重命…

    Linux干货 2016-08-19
  • mysql基础

      mysql基础 数据模型: 数据模型:层次模型、网状模型、关系模型、…… 关系模型: 二维关系:表     行:row, entity     列:colume, attribution 索引:数据结构,辅助完成数据查找;  &nbsp…

    Linux干货 2016-11-01
  • week3:cut,sort,grep等shell工具的应用及用户,组管理类命令

    1、列出当前系统上所有已经登录的用户的用户名,注意,同一个用户登录多次只显示一次即可    who | cut -d' ' -f1 | sort –u 2、取出最后登录到当前系统的用户相关信息    who | cut -d' ' -f1 | tail -1 | id 3、取出当…

    Linux干货 2016-11-20
  • 推荐-自动化运维之puppet小试牛刀

     一、puppet介绍       puppet是IT基础设施自动化管理工具,“她”能够帮助系统管理员管理基础设施的整个生命周期:供应(provisioning、配置(configuration)、联动(orchestration)及报告(reporting)。    …

    Linux干货 2016-04-05
  • LVS –负载均衡基础

    一 负载均衡的五种解决方案 1 http重定向 HTTP重定向就是应用层的请求转发。用户的请求其实已经到了http重定向负载均衡服务器,服务器根据算法要求用户重定向,用户收到重定向请求后,再次请求真正的集群。 优点:简单 缺点:性能较差 2 DNS域名解析负载均衡 DNS域名解析负载均衡就是在用户请求DNS服务器,获取域名对应的IP地址时,DNS根据服务器直…

    Linux干货 2017-06-22