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