6.10--Shell考试

作者: 藏鋒1013 | 来源:发表于2019-06-12 20:18 被阅读32次

    老男孩 Linux 云计算 Shell 高级编程实战综合考试题

    考试题 1:

    用 source 执行脚本和用 bash 执行 Shell 脚本的区别是什么?

    通过source和“.”加载执行过的脚本,实在当前Shell中执行脚本,因此在脚本结束后,脚本中的变量值在当前Shell中依然存在;
    而sh和bash执行脚本都会启动新的子Shell执行,执行完后返回父Shell。因此变量等无法保留。

    考试题2:

    定义变量内容,不加引号、单引号、双引号、反引号有什么区别?

    单引号:所见即所得,将引号内的所有内容都原样输出
    双引号:输出双引号内的所有内容,如果有命令、变量、特殊转义符等,先解析,然后输出解析结果
    无引号:赋值时如果有空格会造成赋值不完整。在输出内容时,会将含有空格的字符串视为 一个整体来输出,如果有变量、命令等,会先把变量、命令解析出结果,然后输出最终内容;如果字符串中带有空格等特殊字符,有可能无法完整输出
    反引号:一般用于引用命令,执行的时候命令会被执行

    考试题3:

    写出特殊变量对应的意义及应用

    ID 变量 意义
    1 $0 获取当前执行的Shell脚本的文件名
    2 $n 获取当前执行的Shell脚本的第n个参数
    3 $# 获取当前执行的Shell脚本后面接的参数的总个数
    4 $* 获取当前Shell脚本所有传参的参数;加引号将所有参数视为单个字符串
    5 $@ 获取当前She了脚本所有传参的参数;加引号将所有参数视为不同的独立字符串
    6 $? 获取执行上一条指令的执行状态返回值,0为成功,非0为失败
    7 $$ 获取当前执行的Shell脚本的进程号(PID)
    8 $! 获取上一个在后台工作的进程的进程号

    考试题 4:

    写出下面特殊变量扩展的意义

    ID 表达式 意义
    1 ${oldboy} 返回变量$oldboy的内容
    2 ${# #oldboy} 返回变量$oldboy内容的长度(按字符)
    3 ${oldboy:offset:length} 在变量${oldboy}中,从位置offset之后开始提取长度为length的子串
    4 ${oldboy#word} 从变量${oldboy}开头开始删除最短匹配的word子串
    5 ${oldboy##word} 从变量${oldboy}开头开始删除最长匹配的word子串
    6 ${oldboy%word} 从变量${oldboy}结尾开始删除最短匹配的word子串
    7 ${oldboy%%word} 从变量${oldboy}结尾开始删除最长匹配的word子串
    8 ${oldboy/pattern/string} 使用string代替第一个匹配的pattern
    9 ${oldboy//pattern/string} 使用string代替所有匹配的pattern
    10 ${oldboy:-word} 如果oldboy变量值为空或未赋值,就会返回word字符串代替变量的值。用途:如果变量未定义,则返回备用的值,防止变量为空值或未定义而导致异常。

    考试题5:

    通过脚本传参的方式,检查 Web 网站 URL 是否正常(要求主体使用函数)。

    [root@san/server/GJD]# cat 5.sh 
    #!/bin/bash
    ##############################################################
    # File Name: 5.sh
    # Created Time: 2019年06月12日 星期三 09时01分40秒
    # Version: V1.0
    # Organization: 58期6组
    # Author: oldtall
    ##############################################################
    . /etc/init.d/functions
    url(){
    wget -q -o /dev/null --tries=1 -T 2 --spider $1
    if [ $? -eq 0 ]
    then
        action "$1 is ok" /bin/true
    else
        action "$1 not ok" /bin/false
    fi
    }
    usage(){
    echo "usage: $0 URL"
    }
    main(){
    if [ $# -ne 1 ]
    then
        usage
    else
        url $1
    fi
    }
    main $*
    结果测试:
    [root@san/server/GJD]# sh 5.sh www.baidu.com
    www.baidu.com is ok                                        [  确定  ]
    [root@san/server/GJD]# sh 5.sh www.qq.com
    www.qq.com not ok                                          [失败]
    
    

    考试题6:

    开发 Nginx 服务(编译安装)启动停止脚本,并分别通过 chkconfig(CentOS6)
    和 systemctl(CentOS7)实现开机自启动。

    [root@web01/server/Shell]# cat 6.sh 
    #!/bin/bash
    ##############################################################
    # Time:2019-06-02 15:36:12
    # File Name: 6.sh
    # Version: V1.0
    # Author: 高建栋
    # Organization: www.baidu.com
    ##############################################################
    path=/application/nginx/sbin
    RETVAL=0
    . /etc/init.d/functions
    function start() {
       if [ `netstat -lntup|grep nginx|wc -l` -eq 0 ] 
       then
           $path/nginx
           RETVAL=$?
           if [ $RETVAL -eq 0 ]
           then
               action "nginx is started" /bin/true
               return $RETVAL
           else
               action "nginx is started" bin/false
               return $RETVAL
           fi
       else
           echo "nginx is runing"
           return 0
       fi
    }
    function stop() {
        if [ `netstat -lntup|grep nginx|wc -l` -ne 0 ]
        then
            $path/nginx -s stop
            RETVAL=$?
            if [ $RETVAL -eq 0 ]
            then
                action "nginx is stoped" /bin/true
                return $RETVAL
            else
                action "nginx is stop" bin/false
                return $RETVAL
            fi
        else
            echo "nginx is not runing"
            return 0
        fi
    }
    case "$1" in
        start)
            start
            RETVAL=$?
            ;;
        stop)
            stop
            RETVAL=$?
            ;;
        restart)
            stop
            sleep 2
            start
            RETVAL=$?
            ;;
        *)
            echo $"Usage: $0 {start|stop|restart}"
            exit 1
    esac
    结果测试:
    [root@web01/server/Shell]# sh 9-8-nginx1.sh  start
    nginx is started                                           [  确定  ]
    [root@web01/server/Shell]# sh 9-8-nginx1.sh  stop
    nginx is stoped                                            [  确定  ]
    [root@web01/server/Shell]# sh 9-8-nginx1.sh  restart
    nginx is stoped                                            [  确定  ]
    nginx is started                                           [  确定  ]
    

    考试题7:

    猜数字游戏。首先让系统随机生成一个数字,给这个数字定一个范围(1-60),
    让用户输入猜的数字,对输入进行判断,如果不符合要求,就给予高或低的提示,猜对后则
    给出猜对用的次数。

    [root@san/server/scripts]# cat 7.sh 
    #!/bin/bash
    ##############################################################
    # File Name: 7.sh
    # Created Time: 2019年06月11日 星期二 11时43分57秒
    # Version: V1.0
    # Organization: 58期6组
    # Author: oldtall
    ##############################################################
    a=$((RANDOM%100))
    echo "===猜数字==="
    c=0
    menu(){
    read -p "pls input num:" b
    expr $b + 1 &>/dev/null
    if [ $? -ne 0 ]
    then 
        echo "请输入整数数字。"
        menu
    fi
    }
    meng(){
        ((c++))
    if [ $b -eq $a ]
    then
        echo "恭喜你,蒙了$c次,终于对了。"
        exit 0
    elif [ $b -gt $a ]
    then
        echo "大了"
        menu
    else
        echo "小了"
        menu
    fi
    }
    main(){
        menu
        while true
        do
            meng
        done
    }
    main
    结果测试:
    [root@san/server/scripts]# sh 7.sh
    ===猜数字===
    pls input num:56
    大了
    pls input num:34
    小了
    pls input num:44
    小了
    pls input num:50
    恭喜你,蒙了4次,终于对了。
    

    考试题8:

    计算从 1 加到 100 之和(要求用 for 和 while,至少给出两种方法)。

    [root@san/server/scripts]# cat 8.sh 
    #!/bin/bash
    ##############################################################
    # File Name: 8.sh
    # Created Time: 2019年06月11日 星期二 11时42分50秒
    # Version: V1.0
    # Organization: 58期6组
    # Author: oldtall
    ##############################################################
    a=0
    i=1
    while [ $i -le 100 ]
    do
        ((a=a+i))
        ((i++))
    done
    echo $a
    [root@san/server/scripts]# sh 8.sh 
    5050
    

    考试题9:

    利用 bash for 循环打印下面这句话中字母数不大于 6 的单词(某企业面试真
    题)。
    I am oldboy teacher welcome to oldboy training class

    [root@san/server/scripts]# cat 9.sh 
    #!/bin/bash
    ##############################################################
    # File Name: 9.sh
    # Created Time: 2019年06月11日 星期二 11时23分39秒
    # Version: V1.0
    # Organization: 58期6组
    # Author: oldtall
    ##############################################################
    for n in I am oldboy teacher welcome to oldboy training class
    do
        if [ `echo $n|wc -L` -le 6 ]
        then
            echo $n
        fi
    done
    结果测试:
    [root@san/server/scripts]# sh 9.sh 
    I
    am
    oldboy
    to
    oldboy
    class
    

    考试题10:

    使用 read 读入方式比较两个整数大小,要求对用户输入的内容严格判断是否
    为整数,是否输入了两个数字。

    [root@san/server/scripts]# cat 10.sh                                                
    #!/bin/bash
    ##############################################################
    # File Name: 10.sh
    # Created Time: 2019年06月11日 星期二 11时05分14秒
    # Version: V1.0
    # Organization: 58期6组
    # Author: oldtall
    ##############################################################
    read -p "pls input two num:" a b
    expr $a + $b + 1 &>/dev/null
    if [ $? -ne 0 ]
    then
        echo "请输入两个整数数字。"
    fi
    if [ $a -eq $b ]
    then
        echo "$a=$b"
    elif [ $a -ge $b ]
    then
        echo "$a>$b"
    else
        echo "$a<$b"
    fi
    结果测试:
    [root@san/server/scripts]# sh 10
    sh: 10: 没有那个文件或目录
    [root@san/server/scripts]# sh 10.sh 
    pls input two num:2 3
    2<3
    [root@san/server/scripts]# sh 10.sh 
    pls input two num:3 2
    3>2
    [root@san/server/scripts]# 
    [root@san/server/scripts]# sh 10.sh 
    pls input two num:2 2
    2=2
    
    

    考试题11:

    使用 for 循环在/oldboy 目录下批量创建 10 个 html 文件,其中每个文件需要包含 oldboy
    固定字符串加 10 个随机小写字母.

    [root@san/server/scripts]# cat 11.sh 
    #!/bin/bash
    ##############################################################
    # File Name: 11.sh
    # Created Time: 2019年06月11日 星期二 09时25分37秒
    # Version: V1.0
    # Organization: 58期6组
    # Author: oldtall
    ##############################################################
    . /etc/init.d/functions
    path=//server/scripts/oldboy
    [ -d $path ] || mkdir -p $path
    for n in `seq 10`
    do
        a=$(openssl rand -base64 30|sed "s#[^a-z]##g"|cut -c 1-10)
        touch $path/oldboy_${a}.html
        if [  $? -eq 0 ]
        then
            action "touch ok" /bin/true
        else
            action "touch not ok" /bin/false
        fi
    done
    结果测试:
    [root@san/server/scripts]# sh 11.sh 
    touch ok                                                   [  确定  ]
    touch ok                                                   [  确定  ]
    touch ok                                                   [  确定  ]
    touch ok                                                   [  确定  ]
    touch ok                                                   [  确定  ]
    touch ok                                                   [  确定  ]
    touch ok                                                   [  确定  ]
    touch ok                                                   [  确定  ]
    touch ok                                                   [  确定  ]
    touch ok                                                   [  确定  ]
    [root@san/server/scripts]# ls oldboy
    oldboy_cbjdaijmro.html  oldboy_egtrjzibzk.html  oldboy_nahgmmlyxt.html  oldboy_znqquzqeuh.html
    oldboy_cldmesxdmm.html  oldboy_igidrkgsil.html  oldboy_ougnshjyxh.html
    oldboy_cwxzubbntt.html  oldboy_kmwkzrztpb.html  oldboy_ymvyzaoycu.html
    
    

    考试题12:

    将上题 11 中结果文件名中的 oldboy 字符串全部改成 oldgirl,并且将扩展名 html 全部改成
    大写 HTML(不低于 2 种方法)。

    方法一:
    [root@san/server/scripts]# cat 12.sh 
    #!/bin/bash
    ##############################################################
    # File Name: 12.sh
    # Created Time: 2019年06月11日 星期二 10时24分51秒
    # Version: V1.0
    # Organization: 58期6组
    # Author: oldtall
    ##############################################################
    path=/server/scripts/oldboy
    cd $path
    ls|awk -F "[_.]" '{print "mv "$0" oldgirl_"$2".HTML" }'|bash
    结果测试:
    [root@san/server/scripts]# sh 12.sh 
    [root@san/server/scripts]# ll oldboy
    总用量 0
    -rw-r--r-- 1 root root 0 6月  11 10:23 oldgirl_cbjdaijmro.HTML
    -rw-r--r-- 1 root root 0 6月  11 10:23 oldgirl_cldmesxdmm.HTML
    -rw-r--r-- 1 root root 0 6月  11 10:23 oldgirl_cwxzubbntt.HTML
    -rw-r--r-- 1 root root 0 6月  11 10:23 oldgirl_egtrjzibzk.HTML
    -rw-r--r-- 1 root root 0 6月  11 10:23 oldgirl_igidrkgsil.HTML
    -rw-r--r-- 1 root root 0 6月  11 10:23 oldgirl_kmwkzrztpb.HTML
    -rw-r--r-- 1 root root 0 6月  11 10:23 oldgirl_nahgmmlyxt.HTML
    -rw-r--r-- 1 root root 0 6月  11 10:23 oldgirl_ougnshjyxh.HTML
    -rw-r--r-- 1 root root 0 6月  11 10:23 oldgirl_ymvyzaoycu.HTML
    -rw-r--r-- 1 root root 0 6月  11 10:23 oldgirl_znqquzqeuh.HTML
    方法二:
    [root@san/server/scripts]# cat 12_2.sh 
    #!/bin/bash
    ##############################################################
    # File Name: 12_2.sh
    # Created Time: 2019年06月11日 星期二 10时38分41秒
    # Version: V1.0
    # Organization: 58期6组
    # Author: oldtall
    ##############################################################
    path=/server/scripts/oldboy
    cd /$path
    a="oldgirl_"
    for n in `ls`
    do
        b=$(echo $n|awk -F '[_.]' '{print $2}')
        mv $n ${a}${b}.HTML
    done
    方法三:
    [root@san/server/scripts]# cat 12_3.sh 
    #!/bin/bash
    ##############################################################
    # File Name: 12-3.sh
    # Created Time: 2019年06月11日 星期二 11时01分19秒
    # Version: V1.0
    # Organization: 58期6组
    # Author: oldtall
    ##############################################################
    path=/server/scripts/oldboy
    cd /$path
    rename oldboy oldgirl *.html
    rename html HTML *.html
    

    考试题13:

    批量创建要求用户案例
    批量创建 10 个系统帐号 oldboy01-oldboy10 并设置密码(密码为随机 8 位数)。

    [root@san/server/scripts]# cat user.sh 
    #!/bin/bash
    ##############################################################
    # File Name: user.sh
    # Created Time: 2019年06月11日 星期二 09时16分55秒
    # Version: V1.0
    # Organization: 58期6组
    # Author: oldtall
    ##############################################################
    . /etc/init.d/functions
    u=oldboy
    file=/tmp/user.log
    for n in `seq 10`
    do
        useradd $u$n &>/devlnull
        pass="`echo $RANDOM|md5sum|cut -c 2-12`"
        echo "$pass"|passwd --stdin $u$n &>/dev/null
        echo -e "user:$u$n\tpasswd:$pass" >>$file
        if [ $? -eq 0 ]
        then
            action "$u$n ok" /bin/true
        else
            action "$u$n not ok" /bin/false
        fi
    done
    echo --------
    cat $file
    结果测试:
    [root@san/server/scripts]# sh user.sh 
    oldboy1 ok                                                 [  确定  ]
    oldboy2 ok                                                 [  确定  ]
    oldboy3 ok                                                 [  确定  ]
    oldboy4 ok                                                 [  确定  ]
    oldboy5 ok                                                 [  确定  ]
    oldboy6 ok                                                 [  确定  ]
    oldboy7 ok                                                 [  确定  ]
    oldboy8 ok                                                 [  确定  ]
    oldboy9 ok                                                 [  确定  ]
    oldboy10 ok                                                [  确定  ]
    --------
    user:oldboy1    passwd:489ca084787
    user:oldboy2    passwd:6863ad8bcd7
    user:oldboy3    passwd:e6c50fc889e
    user:oldboy4    passwd:e931572b1fa
    user:oldboy5    passwd:d13086f178c
    user:oldboy6    passwd:be9140721c8
    user:oldboy7    passwd:bd83ea814b7
    user:oldboy8    passwd:1a6d96331d5
    user:oldboy9    passwd:36691a6a32a
    user:oldboy10   passwd:957c2741e6c
    
    

    考试题14:

    解决DOS攻击生产案例
    写一个Shell 脚本解决 DOS 攻击生产案例。
    请根据 web 日志,监控当某个 IP 短时内 PV 达到 100(读者根据实际情况设定),即调用
    防火墙命令封掉对应的 IP。防火墙命令为:iptables -I INPUT -s IP -j DROP(IP 为要封的
    地址)

    [root@san/server/GJD]# cat 14.sh 
    #!/bin/bash
    ##############################################################
    # File Name: 14.sh
    # Created Time: 2019年06月12日 星期三 21时20分53秒
    # Version: V1.0
    # Organization: 58期6组
    # Author: oldtall
    ##############################################################
    while true
    do
        awk -F"[: ]+" '/ESTABLISHED/{print $(NF-3)}' netstat.log |sort|uniq -c|sort -rn|head >/tmp/ip.log
        while read line
        do
            ip=`echo $line|awk '{print $2}'`
            count=`echo $line|awk '{print $1}'`
            if [ $count -gt 3 ] && [ `iptables -nL|wc -l` -lt 1 ]
            then
                echo "$ip is 危险"
                iptables -I INPUT -s $ip -j DROP
            else
                echo "$ip is 安全"
            fi
        done</tmp/ip.log
        sleep 5
    done
    
    

    考试题 15:

    菜单自动化软件部署经典案例
    综合实例:打印选择菜单,按照选择一键安装不同的 Web 服务。
    示例菜单:

    [root@oldboy scripts]# sh menu.sh
    1.[install lamp]
    2.[install lnmp]
    3.[exit]
    pls input the num you want:
    

    要求:
    1、当用户输入 1 时,输出“start installing lamp.提示”然后执行/server/scripts/lamp.sh,
    脚本内容输出"lamp is installed"后退出脚本,工作中就是正式 lamp 一键安装脚本;
    2、当用户输入 2 时,输出“start installing lnmp.提示” 然后执行/server/scripts/lnmp.sh
    输出"lnmp is installed"后退出脚本,工作中就是正式 lnmp 一键安装脚本;
    3、当输入 3 时,退出当前菜单及脚本;
    4、当输入任何其它字符,给出提示“Input error”后退出脚本;
    5、要对执行的脚本进行相关的条件判断,例如:脚本文件是否存在,是否可执行等判断,
    尽量用上前面讲解的知识点。

    [root@san/server/scripts]# cat 15.sh 
    #!/bin/bash
    ##############################################################
    # File Name: 15.sh
    # Created Time: 2019年06月10日 星期一 20时39分33秒
    # Version: V1.0
    # Organization: 58期6组
    # Author: oldtall
    ##############################################################
    path=/server/scripts
    cat<<END
    1.[install lamp]
    2.[install lnmp]
    3.[exit]
    END
    read -p "请选择服务:" a
    expr $a + 1 &>/dev/null
    if [ $? -ne 0 ]
    then
        echo $"usage: {1|2|3}"
        exit 1
    fi
    if [ $a -eq 1 ]
    then
        echo "start installing lamp."
        "$path/lamp.sh"
        exit 0
    elif [ $a -eq 2 ]
    then 
        echo "start installing lnmp."
        "$path/lnmp.sh"
        exit 0
    elif [ $a -eq 3 ]
    then
        exit 0
    else
        echo "Input error."
    fi
    结果测试:
    [root@san/server/scripts]# sh 15.sh 
    1.[install lamp]
    2.[install lnmp]
    3.[exit]
    请选择服务:2
    start installing lnmp.
    lnmp is installed
    [root@san/server/scripts]# sh 15.sh 
    1.[install lamp]
    2.[install lnmp]
    3.[exit]
    请选择服务:1
    start installing lamp.
    lamp is installed.
    [root@san/server/scripts]# sh 15.sh 
    1.[install lamp]
    2.[install lnmp]
    3.[exit]
    请选择服务:3
    

    考试题16:

    批量检查多个网站地址是否正常
    企业面试题:批量检查多个网站地址是否正常
    要求:
    1、使用 shell 数组方法实现,检测策略尽量模拟用户访问。
    2、每 10 秒钟做一次所有的检测,无法访问的输出报警。
    3、待检测的地址如下
    http://blog.oldboyedu.com
    http://www.baidu.com
    http://oldboy.blog.51cto.com
    http://10.0.0.7

    [root@san/server/scripts]# cat 16.sh 
    #!/bin/bash
    ##############################################################
    # File Name: 16.sh
    # Created Time: 2019年06月10日 星期一 21时22分02秒
    # Version: V1.0
    # Organization: 58期6组
    # Author: oldtall
    ##############################################################
    . /etc/init.d/functions
    count=0
    list=(
    http://blog.oldboyedu.com
    http://www.baidu.com
    http://oldboy.blog.51cto.com
    http://10.0.0.7
    )
    url(){
        for ((i=0;i<`echo ${#list[*]}`;i++))
        do
            wget -o /dev/null -T 3 --tries=1 --spider ${list[$i]} >/dev/null 2>&1
            if [ $? -eq 0 ]
            then
                action "${list[$i]} is ok" /bin/true
            else
                action "${list[$i]} is not ok" /bin/false
            fi
        done
        ((count++))
    }
    main(){
        while true
        do
        url
        echo ----${count}----
        sleep 2
    done
    }
    main
    结果测试:
    [root@san/server/scripts]# sh 16.sh 
    http://blog.oldboyedu.com is not ok                        [失败]
    http://www.baidu.com is ok                                 [  确定  ]
    http://oldboy.blog.51cto.com is ok                         [  确定  ]
    http://10.0.0.7 is not ok                                  [失败]
    ----1----
    http://blog.oldboyedu.com is ok                            [  确定  ]
    http://www.baidu.com is ok                                 [  确定  ]
    http://oldboy.blog.51cto.com is ok                         [  确定  ]
    http://10.0.0.7 is not ok                                  [失败]
    
    

    考试题17-18:

    单词及字母去重排序案例
    用 shell 处理以下内容:
    1、按单词出现频率降序排序(不低于 3 种方法)
    2、按字母出现频率降序排序(不低于 3 种方法)

    the squid project provides a number of resources to assist users design,implement and support squid installations. Please browse the document ation and support sections for more infomation,by oldboy training.

    17:

    方法一:
    [root@san/server/scripts]# tr "[,. ]" "\n" <oldboy.txt|grep -v "^$"|sort|uniq -c|sort -rn
          2 support
          2 and
          1 users
          1 training
          1 to
          1 the
          1 squid
          1 sections
          1 resources
          1 quid
          1 provides
          1 project
          1 Please
          1 oldboy
          1 of
          1 number
          1 more
          1 installations
          1 infomation
          1 implement
          1 for
          1 document
          1 design
          1 by
          1 browse
          1 ation
          1 assist
          1 a
    方法二:
    方法三:
    

    18:

    grep -o "[^ ]" oldboy.txt|sort|uniq -c|sort -rn
    

    考试题 19:

    已知:/etc/hosts 的内容为
    192.168.1.11 oldboy11
    192.168.1.21 oldboy21
    192.168.1.31 oldboy31
    请用 shell 脚本实现,怎么才能在输入 IP 后找到/etc/hosts 里对应的唯一的 hostname?

    解答:
    [root@san/server/scripts]# cat 19.sh 
    #!/bin/bash
    ##############################################################
    # File Name: 19.sh
    # Created Time: 2019年06月10日 星期一 19时53分03秒
    # Version: V1.0
    # Organization: 58期6组
    # Author: oldtall
    ##############################################################
    read -p "pls input IP后两位:" IP
    grep "192.168.1.$IP" /etc/hosts|awk -F '[ ]' '{print $NF}'
    结果测试:
    [root@san/server/scripts]# sh 19.sh 
    pls input IP后两位:21
    oldboy21
    [root@san/server/scripts]# sh 19.sh 
    pls input IP后两位:31
    oldboy31
    [root@san/server/scripts]# sh 19.sh 
    pls input IP后两位:11
    oldboy11
    
    

    考试题20:

    上海@Danny(122504707)21:54:37
    请教一个问题
    cat oldboy.txt
    192.168.1.1 /hello1/b.do?bb=4
    192.168.1.2 /hello2/a.do?ha=3
    192.168.1.3 /hello3/r.do?ha=4
    如何显示成以下效果
    192.168.1.1 b.do
    192.168.1.2 a.do
    192.168.1.3 r.do

    解答:
    [root@san/server/scripts]# cat 20.sh 
    #!/bin/bash
    ##############################################################
    # File Name: 20.sh
    # Created Time: 2019年06月10日 星期一 20时03分49秒
    # Version: V1.0
    # Organization: 58期6组
    # Author: oldtall
    ##############################################################
    awk -F '[/ ?]' '{print $1,$4}' oldboy.txt
    结果测试:
    [root@san/server/scripts]# sh 20.sh
    192.168.1.1 b.do
    192.168.1.2 a.do
    192.168.1.3 r.do
    

    相关文章

      网友评论

        本文标题:6.10--Shell考试

        本文链接:https://www.haomeiwen.com/subject/rudktctx.html