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

相关推荐

  • GOPS 2016全球运维大会 • 北京站

    GOPS 2016全球运维大会 • 北京站已经圆满落幕,最新GOPS大会推荐:GOPS2017全球运维大会 • 深圳站 基本信息: GOPS2017全球运维大会 • 深圳站 时间:2017-04-21 08:00:00 至 2017-04-22 18:00:00结束 地点:深圳    会议规模:5000人 会议详情:http://www.…

    Linux干货 2016-11-03
  • Acheng学习宣言

    我是Acheng,我参加了马哥Linux运维网络班,从2016年9月开始我将跟随马哥学习Linux技术。我的学习宣言是:再努力也不为过!朝着活学活用,做到做精的方向努力吧! 

    Linux干货 2016-10-25
  • LINUX下用户管理命令简述

    LINUX下用户管理命令简述 添加用户并设置密码 useradd [用户名] 创建用户 [root@localhost ~]# useradd jack [root@localhost ~]# cat /etc/shadow | grep jack jack:!!:17257:0:99999:7::: passwd [用户名] 设置密码 [root@loca…

    Linux干货 2017-04-05
  • 不重启添加硬盘

    添加硬盘后 ls /dev/sd* 不重启添加硬盘 [root@localhost ~]# cd /sys/class/scsi_host/ [root@localhost scsi_host]# ls host0  host1  host2 [root@localhost scsi_host]# echo “- – -”…

    Linux干货 2017-10-21
  • NFS实现(双httpd + php-fpm + nfs + mysql 搭建discuz论坛)

    NFS相关介绍一、NFS简介1. NFS(Network File System): NFS是一个文件共享协议, 也是是在类Unix系统中在内核中实现的文件系统。2. 起源: 最早是由SUN公司研发,非常古老,只是实现文件共享,安全控制方面比较简陋。 版本有, NFSv1, NFSv2,NFSv3,NFSv4. v4版开始支持kerber…

    Linux干货 2016-10-19
  • 马哥教育网络21期+第十周练习博客

    马哥教育网络21期+第十周练习博客 1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) CentOS启动流程:1,加电自检->Boot Sequence–>加载内核文件 BOOT Sequence中包含了MBR和GRUB     MBR:记录磁盘扇区,共512字…

    Linux干货 2016-09-19