人志建,则无敌—if、case练习

马哥21期网络班-9周博客作业

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

#!/bin/bash
for i in `cut -d: -f7 /etc/passwd`; do
        if [ $i == /sbin/nologin ]; then
                let nologin++       
        else
                let sh++     
        fi  
 done
 echo "login user:$sh"echo "nologin user:$nologin"

2、写一个脚本

(1) 获取当前主机的主机名,保存于hostname变量中;

(2) 判断此变量的值是否为localhost,如果是,则将当前主机名修改为www.magedu.com

(3) 否则,则显示当前主机名;

#!/bin/bash
name=`hostname`
if [ $name == localhost ];then
        hostname www.magedu.com
else
        echo "$name"
fi

3、写一个脚本,完成如下功能

(1) 传递一个磁盘设备文件路径给脚本,判断此设备是否存在;

(2) 如果存在,则显示此设备上的所有分区信息;

#!/bin/bash
df -l $1 &> /dev/null
if [ `echo $?` = 0 ];then
        fdisk -l | grep "$1"
else
        echo "Enter dir no zai."
fi

4、写一个脚本,完成如下功能

脚本能够接受一个参数;

(1) 如果参数1为quit,则显示退出脚本,并执行正常退出;

(2) 如果参数1为yes,则显示继续执行脚本;

(3) 否则,参数1为其它任意值,均执行非正常退出;

#!/bin/bash
[ $# -eq 0 ] && echo "Enter something!" && exit 1
case $1 in  
    "quit")        
        echo "scripts quit"
        exit 0
        ;;  
    "yes")        
        echo "continue the scripts"
        ;;  
    *)  
        echo "Abnormal exit "
        exit 1 
        ;;  
esac

5、写一个脚本,完成如下功能

传递一个参数给脚本,此参数为gzip、bzip2或者xz三者之一;

(1) 如果参数1的值为gzip,则使用tar和gzip归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160613.tar.gz;

(2) 如果参数1的值为bzip2,则使用tar和bzip2归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160613.tar.bz2;

(3) 如果参数1的值为xz,则使用tar和xz归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160613.tar.xz;

(4) 其它任意值,则显示错误压缩工具,并执行非正常退出;

#!/bin/bash
[ $# -eq 0 ] && echo "Enter compression tool!" && exit 1
case $i in
        "gzip")
                tar -cfz /etc/ /backups/etc-20160613.tar.gz
                ;;  
        "bzip2")
                tar -cfj /etc/ /backups/etc-20160613.tar.bz2
                ;;  
        "xz")
                tar -cfJ /etc/ //backups/etc-20160613.tar.xz
                ;;  
                    
        *)  
                echo "Error tool."
                exit 0
                ;;  
esac

6、写一个脚本,接受一个路径参数:

(1) 如果为普通文件,则说明其可被正常访问;

(2) 如果是目录文件,则说明可对其使用cd命令;

(3) 如果为符号链接文件,则说明是个访问路径;

(4) 其它为无法判断;

#!/bin/bash
if [ -f $1 ]; then
        echo "This is file normal access."
elif [ -d $1 ]; then
        echo "This id folder use of cd."
elif [ -L $1 ]; then
        echo "This is access path."
else 
        echo "unknown."
fi

7、写一个脚本,取得当前主机的主机名,判断

(1) 如果主机名为空或为localhost,或为"(none)",则将其命名为mail.magedu.com

(2) 否则,显示现有的主机名即可;

#!/bin/bash
if [ `hostname` == localhost ] && [ `hostname` == none ]; then
        hostname mail.magedu.comelse
        hostnamefi

8、写一脚本,接受一个用户名为参数;

(1) 如果用户的id号为0,则显示其为管理员;

(2) 如果用户的id号大于0且小于500,则显示其为系统用户;

(3) 否则,则显示其为普通用户;

#!/bin/bash
id $1 &> /dev/null
if [ $? -eq 0 ]; then
        id=`grep "^$1" /etc/passwd | cut -d: -f3`        
        if [ $id -eq 0 ]; then
                echo "This root"
        elif [ $id -le 500 ]; then
                echo "This is system"
        else 
                echo "general user"
        fi
fi

10、写一个脚本,传递一个用户名参数给脚本;

(1) 如果用户的id号大于等于500,且其默认shell为以sh结尾的字符串,则显示“a user can log system.”类的字符串;

(2) 否则,则显示无法登录系统;

#!/bin/bash 

if [ $# -eq 0 ]; then
        echo "Enter user."
        exit 1fiid $1 &> /dev/null
        if [ $? -eq 0 ]; then
        id=`grep "^$1.*sh$" /etc/passwd | cut -d: -f3`        
        if [ -n $id ] && [ $id -ge 500 ]; then
                echo "a user can log system."
        else 
                echo "Unable to log in."
        fi  
 else
      echo "Enter user."
      exit 2
 fi

11、写一个脚本,完成如下任务 :

(1) 按顺序分别复制/var/log目录下的每个直接文件或子目录至/tmp/test1-testn目录中;

(2) 复制目录时,才使用cp -r命令;

(3) 复制文件时使用cp命令;

(4) 复制链接文件时使用cp -d命令;

(5) 余下的所有类型,使用cp -a命令;

#!/bin/bash
dir="/var/log/"
des="/tmp/test1-testn"
mkdir $des
for i in `ls $dir`; do
    if [ -d $i ]; then 
        cp -r $dir$i $des/    
        elif [ -f $i ]; then
        cp $dir$i $des/    
        elif [ -s $i ]; then
        cp -d $dir$i $des/    
        else
        cp -a $dir$i $des/    
        fi  
    done

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

(0)
N21_志建N21_志建
上一篇 2016-09-05 08:51
下一篇 2016-09-05 08:51

相关推荐

  • 进程管理工具:ps,top,htop,dstat

    进程列表查看,系统资源使用情况查看,比如CPU占用情况,内存使用情况,网络IO,硬盘IO等等。本文介绍的几款工具帮您实现。 进程是指运行中的程序的一个副本,进程的有关信息映射在/proc/#下,ps等工具通过加工/proc/下文件而显示出进程列表。 linux内核属于抢占式多任务式,内核将CPU处理时间按时间片分配给各个进程,这里有一个优先级的问题,优先级越…

    Linux干货 2016-09-22
  • 新的开始

    加入马帮,新的开始,加油!

    Linux干货 2016-09-19
  • 磁盘管理之文件系统

    一,概述 文件系统是操作系统用于明确存储设备或分区上的文件的方 法和数据结构;即在存储设备上组织文件的方法。操作系统 中负责管理和存储文件信息的软件结构称为文件管理系统, 简称文件系统。  从系统角度来看,文件系统是对文件存储设备的空间进行组 织和分配,负责文件存储并对存入的文件进行保护和检索的 系统。具体地说,它负责为用户建立文件,存入、读出、修…

    Linux干货 2016-09-05
  • 源码编译nginx和Nginx的特性,配置文件指令说明

    nginx的官方站点 www.nginx.org Nginx:engine X Tenginx:Taobao enginx libevent:高性能的网络库 epoll(); Nginx特性  模块化设计,较好扩展性:但不支持模块的动态装卸载;Tenginx支持;  高可靠性   master –> …

    Linux干货 2017-04-30
  • 文件查找工具

    文件查找     我们常常需要知道哪个文件放在哪里,才能够对该文件进行一些修改或维护等动作。 有些时候某些软件配置文件的文件名是不变的,但是各发行版 放置的目录则不同。 此时就得要利用一些搜寻指令将该配置文件的完整文件名捉出来,这样才能修改。     比较实用的两个文件查找工具l…

    Linux干货 2016-08-21
  • 常用命令之ls 详解

    ls详解 罗列目录内容权限,列出文件的信息列表(默认为当前目录)。 这个命令是Linux操作系统使用频率最高的命令,没有之一。熟练掌握这个命令的常用参数,可以提高学习、工作效率,因此需要认真对待。 1. 常用选项 – -a,–all:显示当前目录下全部文件(常用) [root@jingz ~]# ls -…

    Linux干货 2016-08-02

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-07 18:01

    完成的非常的好,排版也非常的漂亮,在变量与字符串之间比较时,字符串应加上”” 或 ”,加油