本文共 1489 字,大约阅读时间需要 4 分钟。
编写一个问候程序,它执行时能根据系统当前的时间向用户输出问候信息。假设从半夜到中午为早晨,中午到下午六点为下午,下午六点到半夜为晚上。
!/bin/bash
d=date +%H
if [ $d -ge 0 -a $d -lt 7 ] # -a 表示并且 then tag=1elif [ $d -ge 7 -a $d -lt 12 ]then tag=2elif [ $d -ge 12 -a $d -lt 18 ]then tag=3elsetag=4fi case $tag in
1)echo "zaoshanghao";;2)echo "shangwuhao";;3)echo "xiawuhao";;4)echo "wangshanghao";;*)echo "error";;esac写一个shell脚本,实现简单的弹出式菜单功能,用户能根据显示的菜单项从键盘选择执行对应的命令。
#!/bin/bash
PS3="输入数字(1-3):"select i in w ls pwd exitdocase $i inw)w;;ls)ls;;pwd)pwd;;exit)exit;;*)echo "输入数字(1-3):";;esacdone写一个shell脚本,执行中每隔5分钟检查指定的用户是否登录系统,用户名从命令行输入,如果指定的用户已经登录,则显示相关信息。
#!/bin/bash
#read -p "输入一个用户:" cwhile :doif w|sed '1d'|awk '{print $1}'|grep -qw "$1"then echo "$1已经登录"exitfisleep 30done先普及一个小常识,我们用ps aux可以查看到进程的PID,而每个PID都会在/proc内产生。如果查看到的pid在proc内是没有的,则进程被人修改了,这就代表系统很有可能已经被***过了。 请用上面知识编写一个shell,定期检查下自己的系统是否被人***过
#!/bin/bash
#read -p "输入一个用户:" cwhile :doif w|sed '1d'|awk '{print $1}'|grep -qw "$1"then echo "$1已经登录"exitfisleep 30done[root@love01 shell100]# cat 44.sh #!/bin/bashpp=$$ #shell的pidps -elf |sed '1d' >/tmp/pid.txtfor pid inawk -v ppn=$pp '$5!=ppn {print $4}' /tmp/pid.txt
do if ! [ -d /proc/$pid ]thenecho "系统中没有pid为$pid的目录,请检查"fidone 想办法把文本里面每三行内容合并到一行 例如:1.txt内容
1
234567处理后应该是1 2 3
4 5 67#!/bin/bash
n=1cat $1 |while read linedon1=$[$n%3]if [ $n1 -eq 0 ]then echo "$line"elseecho -n "$line" #不换行输出fin=$[$n+1]done转载于:https://blog.51cto.com/12948291/2342644