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 10:17
下一篇 2017-08-28 14:14

相关推荐

  • iptables基础实战练习

    目录: 一、基本规则练习 二、SNAT源地址转移 三、DNAT目标地址转移   一、基础规则练习   (1) 放行ssh (端口:22) 1 iptables -A INPUT -d 192.168.42.153 -p tcp –dport 22 -j ACCEPT 2 iptables -A OUTPUT -s 192.168.42.…

    2017-08-04
  • HTTPD-相关的配置

    一次完整的HTTP请求处理过程: 1、建立连接:接收或拒绝链接请求 2、接受请求:接收客户端请求报文中对某资源的一次请求的过程 Web访问响应模型(Web I/O) 单进程I/O模型:启动一个进程处理用户请求,而且一次只处理一个,多个请 求被串行响应; 多进程I/O模型:并行启动多个进程,每个进程响应一个链接请求; 复用I/O结构:启动一个进程,同时响应N个…

    2017-08-29
  • Nginx基础

    Nginx基础 目录 Nginx概述 Nginx的优点 Nginx相比Apache 编译安装Nginx Nginx配置文件讲解 ngx_http_access_module模块 ngx_http_auth_basic_module模块 ngx_http_log_module模块 ngx_http_stub_status_module模块 Nginx概述 En…

    Linux干货 2016-11-01
  • Linux新增磁盘分区

    磁盘的分区        主分区与扩展分区最多可以有4个(分区表64字节,每分区占16字节);        扩展分区最多只能有一个;        逻辑分区是由扩展分区持续分出来的分区;       &nbs…

    Linux干货 2016-05-29
  • 【yum安装程序】Centos7.4使用yum光盘安装httpd

    举例:Centos7.4使用yum光盘安装httpd

    Linux干货 2018-03-17