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

相关推荐

  • dstat,htop,top,ps命令 (Blog 8)

      Linux哲学思想之一:一切皆文件:内核将其参数全部映射为文件;这些文件保存在/proc, /sys目录中;/proc目录:保存内核及进程状态信息,是内核参数的映射; 内核参数:可调参数:调整运行特性;/proc/sys不可调参数:输出内核统计信息及状态信息; 进程状态:/proc/# 与进程号同名的目录,目录下存放许多当前进程相关信息; 进程…

    Linux干货 2017-11-27
  • Second

    1、 linux 上的文件管理类命令都有哪些, 其常用的使用方法及相关示例演示 cat     concatenate file and print ont the standard output cat [OPTION]…[FILE]…      &nbsp…

    Linux干货 2016-12-13
  • Linux中查看文本工具

    一、文件查看 文件查看命令:cat,tac,rev,我们重点详解cat命令 cat命令连接文件并打印到标准输出设备上,cat经常用来显示文件的内容,类似于下的type命令 我们可以理解cat命令是复制标准输入到标准输出 cat命令选项: cat [OPTION]… [FILE]… -E:显示行结束符$   &nbs…

    Linux干货 2016-08-07
  • 网络组(Network Teaming)

    网络组(Network Teaming) 网络组:是将多个网卡聚合在一起的方法,从而实现容错和提高吞吐量 网络组不同于旧版中bonding技术,提供更好的性能和扩展性 网络组由内核驱动和teamd守护进程实现. 多种方式runner     broadcast     roundrobin     …

    Linux干货 2017-03-26
  • Linux基础知识之压缩、解压、归档工具

    压缩、解压、归档工具     压缩格式:gz,bz2,xz,zip,Z 压缩算法不同,压缩比也会不同     1.compress/uncompress (.Z) compress [-dfvcVr] [-b maxbits] [file …] -d: 解压缩,相当于 -c: 结果输出至标准输出, 不删除原…

    Linux干货 2016-08-19
  • 马哥教育网络班20期+第四周博客作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@llww3317 ~]# cp -r /etc/skel /home [root@llww3317 ~]# mv /home/ske…

    Linux干货 2016-07-05