Shell入门05 -- 循环语句

2021-10-10  本文已影响0人  YanZi_33

For循环

for 变量名 in [ 取值列表 ]
do 
    循环体
done
#!/bin/bash
  
for i in {1..254}
do

 {
   ip=192.168.70.$i
   ping -c1 -W1 $ip &>/dev/null
   if [ $? -eq 0 ]; then
     echo "$ip |tee -a ip.txt"
   fi
 }&

done

wait
echo "Get IP is Finsh!!!"

案例:批量创建用户

#!/bin/bash

read -p "请输入用户名前缀|密码|数量: " prefix password num

if [[ ! $num =~ ^[0-9]+$ ]]; then
   echo "Error 请重新输入数字"
fi

cat <<-EOF
  您输入的用户名前缀是: $prefix
  您输入的统一密码是: $password
  您输入要创建的用户数量是: $num
EOF

read -p "您确定要创建吗? [y|n]" already

case $already in
  y|Y|yes|YES)
      for i in $(seq $num)
      do
         user_name=$prefix$i
         id $user_name &>/dev/null
         if [ $? -ne 1 ]; then
            useradd $user_name && \
            echo "$password|passwd --stdin $user_name" &>/dev/null
            echo "$user_name is OK!!!"
         fi
      done
      ;;
  n|N|no|NO)
      exit 1
      ;;
  *)
      read -p "您确定要创建吗? [y|n]" already
esac
案例:以读文件的方式批量创建用户
SF
Liyanyan
Lijiajia
WGM
#!/bin/bash

for i in $(cat user.txt)
do
  id $i &>/dev/null
  if [ $? -ne 0 ]; then
     useradd $i && \
     echo "asd123" |passwd --stdin $i &>/dev/null
     echo "$i is OK!!!"
  else
     echo "$i create fail!!!"
  fi
done

While循环

while  条件语句
do 
    循环体
done
案例:读入文件用户密码创建用户
SF asd123
Liyanyan asd123
Lijiajia asd123456
WGM asd123456789
XHF asd1234
LXY asd12
#!/bin/bash

while read user
do
  u=$(echo $user|awk '{print $1}')
  p=$(echo $user|awk '{print $2}')

  id $u &>/dev/null
  if [ $? -ne 0 ]; then
     useradd $u && \
     echo "$p"|passwd --stdin $u &>/dev/null
     echo "$u is OK!!!"
  else
     echo "$u is already!!!"
  fi
done < user02.txt

Shell内置命令

上一篇 下一篇

猜你喜欢

热点阅读