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

相关推荐

  • 第二周练习作业

    第二周作业 1、2、4、5 题博客中已经总结 3、请使用命令行展开功能来完成以下练习: (1)、创建/tmp目录下的:ac, ad, bc, bd (2)、创建/tmp/mylinux目录下的: mylinux/     ├── bin     ├── boo…

    Linux干货 2016-11-06
  • 马哥教育网络班22期+第1周课程练习

    1.描述计算机的组成及其功能 计算机的组成及各功能:  计算机主要由硬件、操作系统、软件三大部分组成 硬件 :主要由五部分组成 :运算器:主要是做数据运算              控制器:控制计算机各部件的协调和寻址操作         …

    Linux干货 2016-08-15
  • 第四周作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。                 使用到命令chmod &nbsp…

    Linux干货 2017-02-02
  • SSH会话劫持实现端口转发

    在进行渗透测试时,我们有时候会碰到搭建的测试环境、产品服务器、DMZ或者其他类似的机器群的情况,这时我们完全可以把它们看作跳板。这些系统被设计成对外交互的接口,这时候我们考虑对其他域里的用户进行SSH会话劫持是个不错的选择。 那么如果你拥有了某一个跳板的控制权限,想要通过另一个域的用户对远程域进行访问会怎么办呢?当然,这时候你是没有密码、密钥的,你不能抛弃二…

    系统运维 2015-03-23
  • lvm 逻辑卷管理

    标签:LVM 创建 扩容 缩减 一、LVM  LVM是 Logical Volume Manager(逻辑卷管理)的简写,它由Heinz Mauelshagen在Linux 2.4内核上实现。LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管…

    Linux干货 2015-05-18
  • Linux基础知识(四)-正则表达式grep,egrep

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 2、编辑/etc/group文件,添加组hadoop。 3、手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为/home/hadoop。 4、复制/etc/sk…

    Linux干货 2016-10-17