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
 
 

最新文章

  1. 解决linux下unzip中文有乱码的问题
  2. SiteMesh装饰器使用总结
  3. 数字信号处理与音频处理(使用Audition)
  4. 一个label 里面 显示中文和英文不同颜色
  5. LFLiveKit架构简介
  6. 一个scrapy框架的爬虫(爬取京东图书)
  7. Ubuntu16 编译源码安装MXNet 可变卷积Deformable-ConvNets GPU版
  8. Django --- Django下载和APP创建 ORM (大概步骤)
  9. win7 / mysql-8.0.11-winx64 安装的测坑步骤
  10. Js函数基本介绍
  11. Visual Stdio2017 使用
  12. C# 设置最顶层窗口。TopMostWindow
  13. flutter key
  14. 4.3《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)—链接到目录
  15. 2013-2015 Aaronyang的又一总结,牧童遥指纳尼村
  16. odoo权限
  17. linux 内核升级2 转
  18. OpenCV版本下载
  19. 通过runtime获取对象相关信息
  20. js字符串基本操作

热门文章

  1. Symfony 2.0 认识Request, Response, Session, Cookie
  2. [ML]熵、KL散度、信息增益、互信息-学习笔记
  3. 【HTTP请求】、详解
  4. js高级——构造函数,实例对象和原型对象——prototype、__proto__和constructor构造器
  5. Win10 Notebook
  6. Mybatis框架的输出映射类型
  7. Ckeditor 中粘贴图片
  8. css控制同一个页面的两个表格,一个显示有边框线,而另一个没边框线
  9. Bitmap Images and Image Masks
  10. .NET基础 (14)管理文件和文件夹的类型