bash脚本编程实例

bash脚本编程实例

  • 1.写一个脚本,判断当前系统上所有用户的shell是否为可登录的shell(即用户的shell不是/sbin/nologin),分别统计这两类用户的个数(通过字符串比较来实现)

    #!/bin/bash
    cat /etc/passwd|awk -F: 'BEGIN{nologin=0;login=0}{if($NF=="/sbin/nologin") {nologin++} else {login++}} END{print"login",login;print"nologin",nologin}'
  • 2.写一个脚本

    • 获取当前主机的主机名,保存于hostname变量中
    • 判断此变量的值是否为localhost,如果是,则将当前主机名修改为www.magedu.com
    • 否则,则显示当前主机名

      #!/bin/bash
      hostname=$(hostname)
      if [[ $hostname == 'localhost' ]];then
      hostname www.magedu.com
      else
      echo $hostname
      fi
  • 3.写一个脚本,完成如下功能

    • 传递一个磁盘设备文件路径给脚本,判断此设备是否存在
    • 如果存在,则显示此设备所有的分区信息

      #!/bin/bash
      if [ -b $1 ];then
      fdisk -l $1
      else
      echo ${1} is not existing.
      fi
  • 4.写一个脚本,完成如下功能,脚本能够接受一个参数

    • 如果参数1为quit,则显示退出脚本,并执行正常退出
    • 如果参数1为yes,则显示继续执行脚本
    • 否则,参数1为其他任意值,均执行非正常退出

      #!/bin/bash
      if [[ $1 == 'quit' ]];then
      echo "normal exit."
      exit 0
      elif [[ $1 == 'yes' ]];then
      echo "go on execting."
      else
      exit 1
      fi
  • 5.写一个脚本,完成如下功能,传递一个参数给脚本,此参数为gzip、bzip2或者xz三者之一

    • 如果参数1的值为gzip,则使用tar和gzip归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160613.tar.gz
    • 如果参数1的值为bzip2,则使用tar和bzip归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160613.tar.bz2
    • 如果参数1的值为xz,则使用tar和xz归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160613.tar.xz
    • 如果其他任意值,则显示错误压缩工具,并执行非正常退出

      #!/bin/bash
      if [[ $1 == 'gzip' ]];then
      tar -zcvf /backups/etc-20160613.tar.gz  /etc
      elif [[ $1 == 'bzip2' ]];then
      tar -jcvf /backups/etc-20160613.tar.bz2  /etc
      elif [[ $1 == 'xz' ]];then
      tar -Jcvf /backups/etc-20160613.tar.bz2  /etc
      else
      echo "error compressing tool."
      exit 1
      fi
  • 6.写一个脚本,接受一个路径参数

    • 如果为普通文件,则说明其可以被正常访问
    • 如果是目录文件,则说明可对其使用cd命令
    • 如果为符号链接文件,则说明是个访问路径
    • 其他为无法判断

      #!/bin/bash
      if [ -f $1 -a ! -L $1 ];then
      echo "this is a file,and it can be accessed."
      elif [[ -d $1 ]];then
      echo "this is a directory,and it can use cd commond."
      elif [[ -L $1 ]];then
      echo "this is a symbolic link,and it is a accessing path."
      else
      echo "uknown"
      fi
  • 7.写一个脚本,取得当前主机的主机名,判断如果主机名为空或为localhost,或为“(none)”,则其命名为mail.magedu.com

    #!/bin/bash
    hostname=$(hostname)
    if [ -z $hostname -o  $hostname == 'localhost' -o  $hostname == 'none' ];then
      hostname mail.magedu.com
    fi

原创文章,作者:N27_xiaoni,如若转载,请注明出处:http://www.178linux.com/85520

(0)
N27_xiaoniN27_xiaoni
上一篇 2017-08-28
下一篇 2017-08-28

相关推荐

  • DNS服务和搭建

    DNS服务:        名字解析        DNS 服务        实现主从服务器        实现子域        实现view  …

    2017-04-16
  • KVM基本功能

    前言:本来想写出关于KVM的精品文章,然而学的时间不够长,理解也不够透彻。所以有关KVM的高级功能只能等下一次在写。本次只涉及到KVM的基础核心功能,平时经常会使用的功能.。 一、环境准备: 1、BIOS启用Virtualication。 2、在linux系统上查看系统是否支持硬件虚拟化。Intel系列CPU支持虚拟化标识为vmx,AMD系列CPU标识为sv…

    Linux干货 2015-10-27
  • 防护墙服务

    iptables的基本认识        Netfilter组件: 内核空间,集成在linux内核中 扩展各种网络服务的结构化底层框架 内核中选取五个位置放了五个Hook(勾子)function(INPUT、OUTPUT、FORWARD、PREROUTING、POST ROUTING),而这五个hoot functio…

    2017-08-21
  • 马哥M20-1第一周作业

    作业1:通过echo实现字体闪烁,添加下划线,改变颜色      (1)添加下划线    (2)字体闪烁   (3)改变颜色 作业2:显示前10天的年月日 作业3:screen的使用

    Linux干货 2016-07-29
  • 博客启动计划&我个人理解的Python优缺点

    很久没有写博客了,因为最近一直在使用Python。Python实在不是一门好的工作用语言(我的观点是所有的动态语言都不是好的工作用语言,不仅是Python),但是自己玩还是可以的。但,生活所迫,还是要继续用的呀(笑)。 所以呢,博客还是要写的,java还是最喜欢的,Python也是要学习的,当然其实更多是总结了。既然博客要启动了,这篇文字就权当测试吧,使用公…

    Linux干货 2015-03-13
  • Linux文件类型及颜色标识

    文件类型(共7种): – :普通文件 d:目录文件 (directory) c:字符设备文件 (char) b:块设备文件 (block) s:本地域套接口 (socket) p:有名管道 (pipeline) l:符号连接 (link) 关于硬链接、软连接、复制之间的区别说明: 上图中,我为photo.png这个图片文件建立了一个拷贝(phot…

    Linux干货 2016-10-16