linux shell循环:for、while、until用法详解

2019-09-23 08:51:54刘景俊

方法二:

#!/bin/bash
sum=0
for i in {1..32767};do
    num=`echo $i |md5sum | cut -c1-10`
    case $num in
        efbaf275cd|4be9c40b8b|44b2395c46|f8c8873ce0|b902c16c8b|ad865d2f63)
            echo $i
            let sum++
        ;;
    esac
    if [ $sum -lt 6 ];then
        continue
    else
        break
    fi
done

$#和$*差别

[root@centos6mini 3.19]# ./linshi 1 2 2 3 4
1 2 2 3 4
2 2 3 4
2 3 4
3 4
4
[root@centos6mini 3.19]# cat linshi 
#!/bin/bash
while [ $# -gt 0 ];do  
  echo $*
  shift
done

[root@centos6mini 3.19]# ./linshi 1 2 2 3 4
5
4
3
2
1
[root@centos6mini 3.19]# cat linshi 
#!/bin/bash
while [ $# -gt 0 ];do  
  echo $#
  shift
done

使用一条命令,依次创建指定的用户。如执行createuser.sh tom bob alice harry

方法1:

[root@centos6mini 3.19]# ./linshi createuser.sh tom bob alice harry 
createuser.sh 用户创建成功
tom 用户创建成功
bob 用户创建成功
alice 用户创建成功
harry 用户创建成功
[root@centos6mini 3.19]# cat linshi 
#!/bin/bash
#!/bin/bash
while [ $# -gt 0 ]
do 
    

    id $1 &>/dev/null
    if [ $? -eq 0 ];then
        echo $1 is already exsit.
        shift
        continue
    fi
    useradd $1
    echo "$1 用户创建成功"
    shift

done

删除用户
[root@centos6mini 3.19]# ./linshi createuser.sh tom bob alice harry 
createuser.sh 用户删除成功
tom 用户删除成功
bob 用户删除成功
alice 用户删除成功
harry 用户删除成功
[root@centos6mini 3.19]# cat linshi 
#!/bin/bash
while [ $# -gt 0 ];do 
      userdel -r $1
      echo "$1 用户删除成功"
      shift
done

方法2:

#!/bin/bash
while [ $# -gt 0 ];do
    id $1 &> /dev/null && { echo $1 is alread exist && shift && continue; }
    useradd $1 && echo $1 is created
    shift
done

每隔3秒钟到系统上获取已经登录的用户的信息;如果发现用户hacker登录,则将登录时间和主机记录于日志/var/log/login.log中,并退出脚本

#!/bin/bash
while true;do
if $(ps -au |grep "^hacker.*" &> /dev/null);then  #监测前台终端上有没有用户登陆信息
    echo $(ps -au |grep "^hacker.*" |tr -s " " |cut -d" " -f1,7,9) >> /var/log/login.log
      #将用户登陆信息保存到日志文件中/var/log/login.log
    break  #推出监测
else
    sleep 3s  #三秒已监测,防止程序太多占用cpu
fi
done

随机生成10以内的数字,实现猜字游戏,提示比较大或小,相等则退出

[root@centos6mini 3.19]# ./linshi 
请输入数值 : 1
错了 ,小了
请输入数值 : 9
错误,大了
请输入数值 : 5
猜对了
[root@centos6mini 3.19]# cat linshi 
#!/bin/bash
qe=$( echo $[$RANDOM%10] ) 
while true ;do
read -p "请输入数值 : " qw
    if [ $qw -gt $qe  ] ;then
        echo "错误,大了"

    elif [ $qw -lt $qe  ] ;then
        echo "错了 ,小了"
    elif [ $qe -eq $qw ];then
        echo "猜对了"
        break
    fi

done