ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

shell习题-20

2019-09-04 14:56:42  阅读:184  来源: 互联网

标签:bin shell 20 pid echo ls 习题 参考答案 bash


题目要求

编写一个问候程序,它执行时能根据系统当前的时间向用户输出问候信息。假设从半夜到中午为早晨,中午到下午六点为下午,下午六点到半夜为晚上。

参考答案


if [   -a  ]    并且的意思 
#!/bin/bash
d=`date +%H`
if [ $d -ge 0 -a $d -lt 7 ]
then
    tag=1
elif [ $d -ge 7 -a $d -lt 12 ]
then
    tag=2
elif [ $d -ge 12 -a $d -lt 18 ]
then
    tag=3
else
    tag=4
fi

case $tag in
    1)
    echo "早晨好"
        ;;
    2)
    echo "上午好"
    ;;
    3)
    echo "下午好"
    ;;
    4)
    echo "晚上好"
    ;;
    *)
    echo "脚本出错啦"
    ;;
esac

题目要求

写一个shell脚本,实现简单的弹出式菜单功能,用户能根据显示的菜单项从键盘选择执行对应的命令。

参考答案


更喜欢第二种方式 
#!/bin/bash
PS3="Please input your choice(1-4): "
select i in w ls pwd quit
do
    case $i in 
    w)
        w
        ;;
    ls)
        ls
        ;;
    pwd)
        pwd
        ;;
    quit)
        exit
        ;;
    *)
        echo "Please input 1-3."
        ;;
    esac
done

参考答案2

#!/bin/bash
echo -e "1) w\n2) ls\n3) pwd\n4) quit"
while :
do
read -p "Please input your choice(1-4): " c
case $c in 
    1)
    w
    ;;
    2)
    ls
    ;;
    3)
    pwd
    ;;
    4)
    exit
    ;;
    *)
    echo "Please input 1-4."
    ;;
esac
done

题目要求

写一个shell脚本,执行中每隔5分钟检查指定的用户是否登录系统,用户名从命令行输入,如果指定的用户已经登录,则显示相关信息。

参考答案

#!/bin/bash
while :
do
    if w|sed '1'd|awk '{print $1}'|grep -qw "$1"
    then
    echo "用户$1 已经登录系统."
    exit
    fi
    sleep 300
done

题目要求

先普及一个小常识,我们用ps aux可以查看到进程的PID,而每个PID都会在/proc内产生。如果查看到的pid在proc内是没有的,则进程被人修改了,这就代表系统很有可能已经被过了。
请用上面知识编写一个shell,定期检查下自己的系统是否被人过

参考答案

#!/bin/bash
pp=$$
ps -elf |sed '1'd > /tmp/pid.txt
for pid in `awk -v ppn=$pp '$5!=ppn {print $4}' /tmp/pid.txt`
do
    if ! [ -d /proc/$pid ]
    then
    echo "系统中并没有pid为$pid的目录,需要检查。"
    fi    
done

题目要求

想办法把文本里面每三行内容合并到一行
例如:1.txt内容

1
2
3
4
5
6
7

处理后应该是

1 2 3
4 5 6
7

参考答案

#遇到不能被三整除的行 直接换行

#!/bin/bash
n=1
cat $1 |while read line 
do
    n1=$[$n%3]
    if [ $n1 -eq 0 ]
    then
    echo "$line"
    else
    echo -n "$line " 
    fi
    n=$[$n+1]
done

标签:bin,shell,20,pid,echo,ls,习题,参考答案,bash
来源: https://blog.51cto.com/865516915/2435439

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有