1.脚本编程之函数

    函数是实现结构化编程重要的思想,主要目的是实现代码重用
    定义一个函数:
      function FUNCNAME
      {
      command //函数体
      }
 
      FUNCNAME(){ //函数名紧跟小括号不能加空格
    command
      }
 
      调用只需要使用函数名即可
      bash -x 脚本名 查看脚本执行的过程
    注意:函数的执行结果和函数的执行状态结果是不同的
      引用函数的执行结果:变量=`函数名`
      引用函数的状态结果:函数调用之后 echo $?
      脚本的执行状态结果取决于执行的最后一个命令
    自定义执行状态返回值 return #
  练习:接收参数的函数
    #!/bin/bash
    TWOSUM(){
      echo $[$1+$2]
    }
    SUM=`TWOSUM 5 6` //计算5和6的和
 
    #!/bin/bash
    TWOSUM(){
      echo $[$1+$2]
    }
    for I in {1..10};do
    let J=$[$I+1]
    echo "$I puls $J is `TWOSUM $I $J`"
    done //计算相邻整数的和
 
练习:写一个脚本,判定192.168.0.200-192.168.0.254之间的主机哪些在线。要求:
1.使用函数来实现一台主机的判定过程
2.在主程序中来调用此函数判定指定范围内所有主机的在线情况。
#!/bin/bash
PING(){
if ping -c 1 -W 1 $I &> /dev/null;done
echo "$I is up"
else
echo "$I is down"
fi
done
}
for I in {200..254};do
PING 192.168.0.$I
done
 
PING函数的另外的写法:
PING(){
if ping -c 1 -W 1 $I &> /dev/null;done
return 0
else
return 1
fi
done
}
for I in {200..254};do
PING 192.168.0.$I
if [ $? -eq 0 ];then
echo "192.168.0.$I is up"
else
echo "192.168.0.$I is down"
fi
done
 
练习:写一个脚本,使用函数完成
1.函数接受一个参数,参数为用户名;
判断一个用户是否存在
如果存在,返回此用户的shell和UID;并返回正常值状态
如果不存在,就说此用户不存在,并返回错误状态值
2.在主程序中调用此函数;
扩展1:在主程序中,让用户自己输入用户名后,传递给函数来进行判定;
扩展2:在主程序中,输入用户名判断后不退出脚本,而是提示用户继续输入下一个用户名;但如果输入的是q或Q就退出
#!/bin/bash
Func()
{
if id $1 &>/dev/null;then
echo "`grep ^$1 /etc/passwd|cut -d: -f3,7`"
return 0
else
echo "$1 not exits"
return 1
fi
done
}
read -p "please input another username" CHIOCE
Func $CHIOCE
until [ $CHIOCE == q -o $CHIOCE == Q ];do
user $CHIOCE
if [ $? -eq 0 ]
read -p "please input another username" CHIOCE
else
read -p "no $username,please input another username" CHIOCE
fi
done
 
 

bash脚本编程学习笔记(二)的更多相关文章

  1. Bash脚本编程学习笔记08:函数

    官方资料:Shell Functions (Bash Reference Manual) 简介 正如我们在<Bash脚本编程学习笔记06:条件结构体>中最后所说的,我们应该把一些可能反复执 ...

  2. Bash脚本编程学习笔记07:循环结构体

    本篇中涉及到算术运算,使用了$[]这种我未在官方手册中见到的用法,但是确实可用的,在此前的博文<Bash脚本编程学习笔记03:算术运算>中我有说明不要使用,不过自己忘记了.大家还是尽量使用 ...

  3. Bash脚本编程学习笔记06:条件结构体

    简介 在bash脚本编程中,条件结构体使用if语句和case语句两种句式. if语句 单分支if语句 if TEST; then CMD fi TEST:条件判断,多数情况下可使用test命令来实现, ...

  4. Bash脚本编程学习笔记04:测试命令test、状态返回值、位置参数和特殊变量

    我自己接触Linux主要是大学学习的Turbolinux --> 根据<鸟哥的Linux私房菜:基础篇>(第三版) --> 马哥的就业班课程.给我的感觉是这些课程对于bash的 ...

  5. Bash脚本编程学习笔记05:用户交互与脚本调试

    用户交互 在<学习笔记04>中我们有提到位置参数,位置参数是用来向脚本传递参数的一种方式.还有一种方式,是read命令. [root@c7-server ~]# read name alo ...

  6. bash脚本编程学习笔记(一)

    bash脚本语言,不同于C/C++是一种解释性语言.即在执行前不需要事先转变为可执行的二进制代码,而是每次执行时经解释器解释后执行.bash脚本语言是命令的堆砌,即按照实际需要,结合命令流程机制实现的 ...

  7. 【Linux_Shell 脚本编程学习笔记二、打印菜单】

    综合实例: 打印选择菜单,一键安装Web服务 [root@zuoyan   script]# sh menu.sh 1.[install  lamp] 2. [install lnmp] 3. [ex ...

  8. shell脚本编程学习笔记(二)linux服务器启动流程

    一.linux服务器启动流程 1.bios找到磁盘上的mbr主引导扇区 2.进入grub洁面选择相应的启动内核 3.读取kernel内核文件-/boot/vmlinuz-* 4.读取init的镜像文件 ...

  9. Shell脚本编程基础笔记二

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/8177697.html 一:输入 1:运行时参数 可以在启动脚本时,在其后输入参数. ./脚本 参数1 参数2. ...

随机推荐

  1. 阿里云自定义监控tomcat进程数

    阿里云提供自定义监控SDK,这有助于我们定制化的根据自身业务来做监控,下面我就根据业务需求来介绍一个简单的自定义监控配置. 阿里提供了2个版本的自定义监控接口:自定义监控SDK(python版) :c ...

  2. day25 map,filter,reduce 内置函数,作业

    =====================作业一#用map来处理字符串列表啊,把列表中所有人都变成sb,比方alex_sbname=['alex','wupeiqi','yuanhao']###### ...

  3. VMware workstation 语言包切换

    VMware-workstation-full-10.0.2-1744117安装默认为中文版,如果要使用英文版做如下操作: 找到你的VMware安装目录:例如:D:\Program Files (x8 ...

  4. linux / centos 安装SQL Server 2017 设置默认语言与排序规则Chinese_PRC_CI_AS

    安装 安装很简单参照官方教程 https://docs.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-red-hat?view=sq ...

  5. HBase 强制删除表

    业务系统中有一张表drop不掉了. 可以disable,就是drop不掉. 解决办法: 1.将HDFS上的数据删除或移动 hadoop fs -mv /hbase/<table_name> ...

  6. 【转载】RHEL / CentOS 7 用 Yum 安裝 MySQL 5.6

    久久未更新... 换好工作出去玩耍了一趟, 现在安装机器啦~ 装一个mysql 到centos 7, 一次转载一篇文章, 记录下: 原文地址:http://www.phpini.com/mysql/r ...

  7. 跟微软保持适当距离--Hessian + .net 实现RPC体系的企业应用

    同在一个产业链园区的XX厂因为5台Window2003服务器收到了律师函并且被迫下了12万$的采购单,虽然100万对XXX厂来数不是大数目,但是总有种被打劫的感觉. 在企业ERP应用中服务层一般都是做 ...

  8. Hadoop中Writable类之三

    1.BytesWritable <1>定义 ByteWritable是对二进制数据组的封装.它的序列化格式为一个用于指定后面数据字节数的整数域(4个字节),后跟字节本身. 举个例子,假如有 ...

  9. Linux 基础教程 37-进程命令

    pidof     我们知道每个小孩一出生就会一个全国唯一的编号来对其进行标识,用于以后上学,办社保等,就是我们的身份证号.那么在Linux系统中,用来管理运行程序的标识叫做PID,就是大家熟知的进程 ...

  10. underscore arrays

    1._.first():返回array(数组)的第一个元素.传递 n参数将返回数组中从第一个元素开始的n个元素 _.first = _.head = _.take = function(array, ...