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

相关推荐

  • nginx基本功能学习

    一、NGINX介绍: Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性:            作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。能够支持高达 …

    Linux干货 2015-12-19
  • 编译安装lamp框架

    一、 先说说啥叫lamp     1. lamp简介: Linux Apache Mysql PHP(Python, Perl)的简称,下面说说他们之间的关系         Linux:系统运行平台    &…

    Linux干货 2015-06-18
  • 加密解密基础、PKI以及自建私有CA

    加密解密基础、PKI以及自建私有CA 加密是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。 解密就是加密的逆向操作,将加密过的不可读的数据经过处理,能够是之前不可读的信息还原成可读信息。 PKI是Public Key Infrastructure的首字母缩写,翻译过来就是公钥基础设施;…

    Linux干货 2016-12-07
  • shell脚本之函数相关

       本节主要是作业和select 与case的相关 一、作业 1、斐波那契数列又称黄金分割数列,因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-…

    Linux干货 2016-08-22
  • Linux源码包安装详解

    安装源码包 安装一个源码包,是需要我们自己把源代码编译成二进制的可执行文件。如果你读得懂这些源代码,那么你就可以去修改这些源代码自定义功能,然后再去编译成你想要的。使用源码包的好处除了可以自定义修改源代码外还可以定制相关的功能,因为源码包在编译的时候是可以附加额外的选项的。 源码包的编译用到了linux系统里的编译器,常见的源码包一般都是用C语言开发的,这也…

    Linux干货 2016-09-06
  • 学习宣言

    娶媳妇!娶媳妇!娶媳妇有木有!!! 请享受无法回避的痛苦!!!!!!!

    Linux干货 2016-12-27