1.用脚本批量创建用户user_00 ... user_20, 并且给这些用户设置一个随机密码,并记录到一个日志文件中。
2.让用户输入一个数字,然后判断是否是数字,如果是数字,则打印数字,否则一直让用户输入,直到是数字为止。
3.每隔10秒执行w命令
4.1到10所有数字相加求和
5.当用户输入的数字和预设数字(随机生成一个小于100的数字)一样时,直接退出,否则让用户一直输入,并且提示用户的数字比预设数字大或者小
6.通过传参打印彩色字符串,题目不具体,参考下面看看吧
7.类似于日志切割,系统有个logrotate程序,可以完成归档。但现在我们要自己写一个shell脚本实现归档。 举例: 假如服务的输出日志是1.log,我要求每天归档一个,1.log第二天就变成1.log.1,第三天1.log.2, 第四天 1.log.3 一直到1.log.5。
8.把文档中只有一个数字的行打印出来
9.实现一个乘法口诀输出
10.(比较难)写一个脚本执行后,输入名字,产生随机数01-99之间的数字;
如果相同的名字重复输入,抓到的数字还是第一次抓取的结果;
前面已经抓到的数字,下次不能在出现相同数字;
第一个输入名字后,屏幕输出信息,并将名字和数字记录到文件里,程序不能退出继续等待别的学生输入。
----------------------------------------------------------------------------------------
-----------------------------------------------1. #!/bin/bash for i in `seq -w 0 20` do useradd user_$i passwd=`mkpasswd -s 0` echo $passwd |passwd --stdin user_$i echo "user_$i $passwd" >> /tmp/pass.log done
-------------------------------------------------2. #!/bin/bash while : do read -p "Please input a number: " n n1=`echo $n|sed 's/[0-9]//g'` if [ -z $n1 ] then echo $n exit 0 else continue fi done
--------------------------------------------------3. #!/bin/bash while: do w sleep 10 done
---------------------------------------------------4. #!/bin/bash i=1 sum=0 while [ $i -le 10 ] do sum=$[$sum+$i] i=$[$i+1] done echo $sum
-----------------------------------------------------5. #!/bin/bash m=`echo $RANDOM` n1=$[$m%100] while : do read -p "Please input a number: " n if [ $n == $n1 ] then break elif [ $n -gt $n1 ] then echo "bigger" continue else echo "smaller" continue fi done echo "You are right."
---------------------------------------------------6. #!/bin/bash black_color='\E[1;30m' red_color='\E[1;31m' green_color='\E[1;32m' yellow_color='\E[1;33m' blue_color='\E[1;34m' purple_color='\E[1;35m' cyan_color='\E[1;36m' white_color='\E[1;37m' RES='\E[0m' word=$1 colors=$2 case $2 in black|BLACK|黑色) echo -e "$black_color $word $RES" exit 0 ;; red|RED|红色) echo -e "$red_color $word $RES" exit 0 ;; green|GREEN|绿色) echo -e "$green_color $word $RES" exit 0 ;; yellow|YELLOW|***) echo -e "$yellow_color $word $RES" exit 0 ;; blue|BLUE|蓝色) echo -e "$blue_color $word $RES" exit 0 ;; purple|PURPLE|紫色) echo -e "$purple_color $word $RES" exit 0 ;; cyan|CYAN|青色) echo -e "$cyan_color $word $RES" exit 0 ;; white|WHITE|白色) echo -e "$white_color $word $RES" exit 0 ;; *) echo "Usage: bash $0 word color." ;; esac
--------------------------------------------------------7. #!/bin/bash function e_df() { [ -f $1 ] && rm -f $1 } for i in `seq 5 -1 2` do i2=$[$i-1] e_df /data/1.log.$i if [ -f /data/1.log.$i2 ] then mv /data/1.log.$i2 /data/1.log.$i fi done e_df /data/1.log.1 mv /data/1.log /data/1.log.1
--------------------------------------------------------8. #!/bin/bash f=/etc/passwd line=`wc -l $f|awk '{print $1}'` for l in `seq 1 $line`; do n=`sed -n "$l"p $f|grep -o '[0-9]'|wc -l`; if [ $n -eq 1 ]; then sed -n "$l"p $f fi done
-------------------------------------------------------9. #!/bin/bash for i in `seq 1 9` do for j in `seq 1 $i` do k=$(($i*$j)) echo -n "$i x $j = $k " done echo done
-----------------------------------------------------10. #!/bin/bash while : do read -p "Please input a name:" name if [ -f /work/test/1.log ];then bb=`cat /work/test/1.log | awk -F: '{print $1}' | grep "$name"` if [ "$bb" != "$name" ];then #名字不重复情况下 aa=`echo $RANDOM | awk -F "" '{print $2 $3}'` while : do dd=`cat /work/test/1.log | awk -F: '{print $2}' | grep "$aa"` if [ "$aa" == "$dd" ];then #数字已经存在情况下 echo "数字已存在." aa=`echo $RANDOM | awk -F "" '{print $2 $3}'` else break fi done echo "$name:$aa" | tee -a /work/test/1.log else aa=`cat /work/test/1.log | grep "$name" | awk -F: '{print $2}'` #名字重复 echo $aa echo "重复名字." fi else aa=`echo $RANDOM | awk -F "" '{print $2 $3}'` echo "$name:$aa" | tee -a /work/test/1.log fi done