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
下一篇 2015-08-24

相关推荐

  • LVS-几种负载方式的区别

    LVS的原理很重要,很重要。每一个知识点都要做到熟记与脑,谨记于心,张口就来。 LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。 使用集群技术和Linux操作系统实现一个高性能、高可用的服务器. 很好的可伸缩性(Scal…

    Linux干货 2017-05-11
  • 第一周学习作业

    课后作业 1.描述计算机的组成及其功能。 计算机主要由硬件和软件两大部分组成。 硬件 CPU:又叫中央处理器,其主要功能是进行运算和逻辑运算。 主板:是电脑各个配件的连接平台,电脑的CPU、内存和控制核心电路均安装在主板上。 内存:又称为动态存储器,主要用于存储电脑运行中的数据。 显卡:用于向显示器输出信号的设备。 硬盘:是一种最为常见的外存储器,具有超大容…

    Linux干货 2016-11-30
  • 文件搜索者-find命令详解

    1. 文件查找:          在linux系统中由于文件的众多,往往需要在众多的文件当中查找某一个文件,如果时间一长,很难记得文件存放至何处,不过,这一点,你不比担心,因为开发人员为我们提供了强大的文件搜索工具,下面将介绍两款常用的文件查找工具locate,和find,这两…

    Linux干货 2016-08-15
  • 文本处理-三剑客-awk

    报告生成器,格式化文本输出
    awk [options] ‘BEGIN{ action;… } pattern{ action;… } END{ action;… }’ file …

    2018-03-16
  • gitlab-ce并发超过30引起ip被封1小时的问题

    系统环境描述 System information System:     Ubuntu 14.04 Current User:   git Using RVM:  no Ruby Version: …

    Linux干货 2015-09-06
  • 马哥教育网络班21期+第3周课程练习

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost ~]# who | cut -d' ' -f1 | sort -u 2、取出最后登录到当前系统的用户的相关信息。 [ro…

    Linux干货 2016-07-29