此博文有自己写的其它朋友分享的,其中对其它朋友写的有问题的地方我简单做了一些修改,能保证运行。

1.写一个脚本通过ping命令测试192.168.0151到192.168.0.254之间的所有主机是否在线?
     如果在线,就显示“ip is up"
     如果不在线,就显示"ip is down"
     答案:
          #!/bin/bash
          for I in `seq 151 254`;do
              ping -c1 -w1 192.168.0.$I &>/dev/null && echo "192.168.0.$I is up" || echo "192.168.0.$I is down"
          done
     说明:
          1、 ping -c1 -w1 中-c1是指ping的次数,-w是指执行的最后期限,也就是执行的时间,单位为秒;
          2、 &>/dev/null 是指标准输出和错误输出到/dev/null上,而不在界面上显示;
          3、 后面的&&和|| 是与和或得意思,如a&&b||,表示a为真,则执行b;否则执行c
 
2.写一个脚本:
     1.显示当前系统日期和时间,而后创建目录/tmp/lstest
     2.切换工作目录至/tmp/lstest
     3.创建目录a1d,b56e,6test
     4.创建空文件xy ,x2y,732
     5.列出当前目录下以a,x或者6开头的文件或目录
     6.列出当前目录下以字母开头,后跟一个任意数字,而后跟任意长度字符的文件或目录
     答案:
          #!/bin/bash
          date
          mkdir -pv /tmp/lstest
          cd /tmp/lstest
          mkdir a1d b56e 6test
          touch xy x2y 732
          ls [ax6]*
          ls [[:alpha:]][[:digit:]]*
3.写一个脚本:
     1.设定变量file的值为/etc/passwd
     2.使用循环读取文件/etc/passwd的第2,4,6,10,13,15行,并显示其内容
     3.把这些行保存至/tmp/mypasswd文件中
     答案:
          #!/bin/bash
          file="/etc/passwd"
          for I in 2 4 6 10 13 15;do
              exec 3>/tmp/mypasswd
              line=`head -$I $file  | tail -1`
              echo "$line"
              echo "$line" >&3
              exec 3>&-
          done
 
4.写一个脚本:
     1.切换工作目录至/var
     2.依次向/var目录中的每个文件或子目录问好,形如:
          (提示:for FILE in /var/*;或for FILE in `ls /var`;)
          Hello,log
     3.统计/var目录下共有多少个文件,并显示出来
     答案:
          #!/bin/bash
          cd /var
          let num=0
          for I in `ls /var/*`;do
              echo "Hello,$I"
              num=$[$num+1]
          done
          echo "the number of files is $num"
 
5.写一个脚本:
     1.设定变量FILE的值为/etc/passwd
     2.依次向/etc/passwd中的每个用户问好,并且说出对方的ID是什么
          形如:(提示: LINE=`wc -l /etc/passwd | cut -d " " -f1`)
          Hello,root, your UID is 0.
     3.统计一个有多少个用户
     答案一:
          #!/bin/bash
          file="/etc/passwd"
          LINES=`wc -l $file | cut -d " " -f 1`
          for I in `seq 1 $LINES `;do
              userid=`head -$I $file | tail -1 | cut -d : -f 3`
              username=`head -$I $file | tail -1 | cut -d : -f1`
              echo "Hell $username,your UID is $userid"
          done
          echo "there are $LINES users"
     答案二:
          #!/bin/bash
          file=/etc/passwd
          let num=0
          for I in `cat $file`;do
              username=`echo "$I" | cut -d: -f1`
              userid=`echo "$I" | cut -d: -f3`
              echo "Hello,$username,your UID is $userid"
              num=$[$num+1]
          done
          echo "there are $num users"
 
6.写一个交互脚本,直接运行脚本,出现提示选择一个数字:1:重启httpd服务,2:重启mysqld服务3:重启vsftpd服务,加选项--httpd重启httpd服务,加--mysql会重启mysqld服务,加--ftp会重启vsftpd服务。
     答案:
          #!/bin/bash
          function http(){
              echo "service httpd restart"
          }
 
          function mysql(){
              echo "service mysqld restart"
          }
 
          function vsftp(){
              echo "service vsftpd restart"
          }
 
          if [ -$# -eq 0 ];then
              echo "please choose one num:"
              echo "1:Restart httpd"
              echo "2:Restart mysqld"
              echo "3:Restart vsftpd"
              read -p "Enter your choose:" num
 
              case $num in
                  1)
                      http
                      ;;
                  2)
                      mysql
                      ;;
                  3)
                      vsftp
                      ;;
                  *)
                      echo "pram error,please try it again 0"
              esac
          elif [ "$1" == --httpd ];then
              http;
          elif [ "$1" == --mysqld ];then
              mysql;
elif [ "$1" == --vsftpd ];then
              vsftp;
          else
              echo "pram error,please try it again 1"
          fi
 
7.猜数字的小游戏:
     运行程序后,提示用记输入一个0-9的数字,如果是非数字,那么就提示用户输入数字;
     如果用户猜中,提示用户猜对了;
     如果用户没猜中,那么就提示用户重新输入一个数字;
     如果用户连续五次都没有猜中,则提示用户,24小时后再来玩这个游戏;
#!/bin/bash
function check(){
    if [ $c -eq 5 ]
    then
        echo "Wait 24 hours."
        exit 1
    else
        continue
    fi
}
n2=6
c=0
while :
do
    read -p "Please input a number(1-10): " n
    if [ -z ${n} ]
    then
        echo "不能什么都不输入。"
        tag=3
        c=$[$c+1]
        check
    fi
 
    n1=`echo $n|sed 's/[0-9]//g'`
    if [ -n "$n1" ] && [ -n "${n}" ]
    then
        tag=2
        echo "Just number."
        c=$[$c+1]
        check
    elif [ $n -gt 10 ] || [ $n -lt 1 ]
    then
        tag=1
        c=$[$c+1]
        echo "The number must great than 1 and less than 10."
        check
    else
        tag=0
    fi
 
    if [ $n -ne $n2 ]
    then
        echo "Wrong."
        c=$[$c+1]
        check
    else
        echo "Right."
        exit 0
    fi
done
 
 
8.写一个脚本:
     1.第一个参数为URL,即可下载的文件;第二个参数为目录,即下载后保存的位置
     2.如果用户给的目录不存在,则提示用户是否创建;如果创建就继续执行,否则,函数返回一个51的错误值给调用脚本;
     3.如果给的目录存在,则下载文件;下载命令执行结束后测试文件下载成功与否;如果成功,则返回0给调用脚本,否则,返回52给调用脚本。
     答案:
          
#!/bin/bash
#auth:liuxiaolei
#2018-10-11
 
:<<!
    1.第一个参数为URL,即可下载的文件;第二个参数为目录,即下载后保存的位置
    2.如果用户给的目录不存在,则提示用户是否创建;如果创建就继续执行,否则,函数返回一个51的错误值给调用脚本;
    3.如果给的目录存在,则下载文件;下载命令执行结束后测试文件下载成功与否;如果成功,测返回0给调用脚本,否则,返回52给调用脚本。
!
 
while :
do
    if [ $# -ne 2 ];then
        echo "请输入两个参数:"
        echo "    第一个参数为需要下载的URL"
        echo "    第二个参数为下载到的目录"
        exit
    else
        if [ -d $2 ];then #判断文件是否是目录
            cd $2
            wget $1 &>/dev/null
            a=`echo $?` #得到下载的状态,不报错或是下载成功是0
            if [ $a -ne 0 ];then
                echo 51
            else
                echo "下载完成!"
            fi
            exit
        else
            read -p "make dir?(y or n)" chose
            case $chose in
            y)
                mkdir -p $2
                ;;
            n)
                echo 51
                exit
                ;;
            *)
                echo "Only y or n"
            esac
        fi
    fi
done
测试结果:

9.每天生成一个文件
     要求:请按照这样的日期格式(xxxx-xx-xx)每日生成一个文件,例如今天生成的文件为2018-10-11.log,
          并且把磁盘的使用情况写到这个文件中(不用考虑crom,仅仅写脚本即可)
     #!/bin/bash
     #date: 2018年10月11日
     d=`date +%F`
     logname="$d.log"
     df -h > /tmp/$logname

shell 常用案例的更多相关文章

  1. Jmeter接口测试加解密及Bean Shell使用案例

    Jmeter接口测试加解密及Bean Shell使用案例 https://blog.csdn.net/russ44/article/details/56009084 本文以base64加解密为例: 一 ...

  2. 【shell 大系】Linux Shell常用技巧

    在最近的日常工作中由于经常会和Linux服务器打交道,如Oracle性能优化.我们数据采集服务器的资源利用率监控,以及Debug服务器代码并解决其效率和稳定性等问题.因此这段时间总结的有关Linux ...

  3. Linux系统重要快捷键& Shell 常用通配符

    [Tab]:使用Tab键来进行命令补全: [Ctrl+c]:强行终止当前程序: [Ctrl+d]:键盘输入结束或退出终端: [Ctrl+s]:暂定当前程序,暂停后按下任意键恢复运行: [Ctrl+z] ...

  4. shell 常用正则

    shell常用正则表达式   “^\d+$” //非负整数(正整数 + 0)   “^[0-9]*[1-9][0-9]*$” //正整数   “^((-\d+)|(0+))$” //非正整数(负整数 ...

  5. Hbase Shell常用命令

    hbase shell常用的操作命令有create,describe,disable,drop,list,scan,put,get,delete,deleteall,count,status等,通过h ...

  6. (转)Hbase shell 常用命令(1)

    Hbase shell 常用命令(1) link:http://blog.csdn.net/scutshuxue/article/details/6988348 下面我们看看HBase Shell的一 ...

  7. hbase基本概念和hbase shell常用命令用法

    1. 简介 HBase是一个分布式的.面向列的开源数据库,源于google的一篇论文<bigtable:一个结构化数据的分布式存储系统>.HBase是Google Bigtable的开源实 ...

  8. Linux Shell常用技巧(目录)

    Linux Shell常用技巧(一) http://www.cnblogs.com/stephen-liu74/archive/2011/11/10/2240461.html一. 特殊文件: /dev ...

  9. 【转载】HBase基本概念和hbase shell常用命令用法

    1. 简介 HBase是一个分布式的.面向列的开源数据库,源于google的一篇论文<bigtable:一个结构化数据的分布式存储系统>.HBase是Google Bigtable的开源实 ...

随机推荐

  1. Optaplanner规划引擎的工作原理及简单示例(1)

    在之前的文章中,老猿已介绍过APS及规划的相关内容,也对Optaplanner相关的概念和一些使用示例进行过介绍,接下来的文章中,我会自己做一个规划小程序 - 一个关于把任务分配到不同的机台上进行作来 ...

  2. vim汇总

    跳到100行 100gg :100    

  3. PAT 乙级 1044 火星数字 (20 分)

    1044 火星数字 (20 分) 火星人是以 13 进制计数的: 地球人的 0 被火星人称为 tret. 地球人数字 1 到 12 的火星文分别为:jan, feb, mar, apr, may, j ...

  4. SSM框架-MyBatis框架数据库的增删查改操作

    话不多说,在User.xml文件中主要写一下操作数据库的sql语句,增,删,查,改是最常见的数据库操作 User.xml文件下:

  5. Mono的CustomConditionAttribute使用

    1.Mono的CustomConditionAttribute使用有诸多的限制,没有在XML中定义来的灵活 2.CustomConditionAttribute定义的子类必须和ExtensionAtt ...

  6. java构建工具——ant使用

    Ant是跨平台的构建工具,它可以实现项目的自动构建和部署等功能.在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作. 一.安装与部署 1.1 下载 下载地址:https: ...

  7. idea基本使用1

    首先推荐两个快捷键 alt+Ent        相当于eclipse中的crtl+1 alt+ins         :能创建包,类等,还能生成getter,setter,和构造函数 首先创建一个w ...

  8. Flutter windows环境安装 + 模拟设备 + 项目运行

    目录: 一.JDK安装 1.1.JDK下载 1.2.环境变量配置 1.3.测试 二.ANDROID-SDK安装 2.1.下载 2.2.环境变量配置 三.Flutter安装 3.1.下载 3.2.环境变 ...

  9. eclipse注解模板,实实在在的

    1.可以引用其他codetemplate.xml 2.可以自己配置,很快,就几个主要的,个人建议这个,配一次妥妥的,以后就会了,也不用搭理模板了 3.按照公司要求 拿去https://www.jian ...

  10. 通过ldap验证svn服务

    1.简单介绍: 这里需要介绍一点的就是svn服务器的验证是需要通过SASL机制的,那么SASL全称为(Simple Authentication and security Layer),是一种用来扩充 ...