人志建,则无敌—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
下一篇 2016-09-05

相关推荐

  • Linux的启动流程

    Linux的启动流程大致上如下图. 现在详细说明一下每个步骤: 第一阶段 当系统启动时,系统首先会加载BIOS。BIOS的首先会检查各硬件设备,当检查完毕没有问题之后。BIOS会根据设定的BootSequence来寻找可以引导系统的设备。一般而言,Linux是通过磁盘上MBR来引导系统的。 第二阶段 MBR是Master Boot Record,是位于磁盘第…

    Linux干货 2016-02-28
  • 计算机原理

    计算机由CPU、存储器、输入设备、输出设备组成。 CPU的功能:对数据运算加工,控制设备等 存储器的功能:存储数据,加载程序 输入设备:下指令,提供数据等 输出设备:输出数据加工的结果 linux发行版本:Debian:ubuntu、knopix Slackware:S.u.S.E、SLES、openSUSE RedHat:Redhat 9.0、RedHat…

    Linux干货 2017-12-04
  • apache自动化脚本搭建虚拟主机

    1 基于主机名实现三个虚拟主机 (1).创建网站目录与测试文件 (2).创建虚拟主机文件(目录为/etc/httpd/conf.d/下)   (3).修改测试apache主机hosts文件(就不用DNS服务器解析,方便测试),测试httpd配置文件是否有问题,重启httpd服务   (4)修改测试主机hosts文件(就不用DNS服务器解析…

    Linux干货 2016-10-09
  • cat用法

    用法:cat [选项] [文件]… 将[文件]或标准输入组合输出到标准输出。 -A, –show-all 等价于 -vET -b, –number-nonblank 对非空输出行编号 -e 等价于 -vE -E, –show-ends 在每行结束处显示 $ -n, –number 对输出的所有行编号…

    2017-04-02
  • 7-28-文件管理

    1.stat命令和时间戳 详解 背景:                在Linux中,没有文件创建时间的概念。只有文件的访问时间、修改时间、状态改变时间。也就是说不能知道   &n…

    Linux干货 2016-08-02
  • Linux bash编程基础语法总结

    前言 在Linux学习过程中,我们无可避免的会碰到一个既让人喜欢,又令人头疼的神奇的东西——bash编程,即shell脚本。那么什么是shell脚本呢?shell是一个命令语言解释器,而shell脚本则是Linux命令的集合,按照预设的顺序依次解释执行,来完成特定的、较复杂的系统管理任务,类似于Windows中的批处理文件。本文带来的是bash编程的基础语法…

    Linux干货 2015-04-04

评论列表(1条)

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

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