シェルスクリプトループの小さなケース1

にとって

1.これらのユーザーのログインアカウントを作成し、指定された従業員のリストに基づいてデフォルトのパスワードを設定します

まず、スクリプトで変数を指定するために使用される、テスト用のユーザーリストファイルが必要です。

[root@server2 ~]# vi users.txt 
aa
bb
cc
dd  //员工名单,后续可根据需要添加新的员工,再执行脚本创建用户
~  

従業員リストにユーザーを循環的に作成するスクリプトを作成し、デフォルトのパスワード123456を設定します

[root@server2 ~]# vi useradd.sh
#!/bin/bash
ULIST=$(cat /root/users.txt)   //将员工名单赋值给变量ULIST
for UNAME in $ULIST            //将名单里的员工循环赋值给变量UNAME
do
useradd $UNAME                 //创建用户
echo "123456" | passwd --stdin $UNAME &> /dev/null //设置默认密码,执行结果不显示在执行界面
done
[root@server2 ~]# chmod +x useradd.sh   //添加执行权限
[root@server2 ~]# ./useradd.sh          //执行脚本
[root@server2 ~]# tail -10 /etc/passwd    //验证并查看创建的用户`

結果を確認すると、ユーザーが正常に作成され、123456パスワードを使用してホストにログインできます。

ここに写真の説明を挿入

2.ホームディレクトリ内のファイルをバックアップし、退職した従業員のアカウントとホームディレクトリを一緒に削除します

まず、辞任した従業員のリストを用意し、従業員ディレクトリの1つに確認用のファイルを作成する必要があります

[root@client1 ~]# vi users1.txt
aa
bb
cc
dd
[root@client1 ~]# vi uesrdel.sh     //创建删除用户脚本
#!/bin/bash
ulist=$(cat /root/users1.txt)   //获取离职员工名单
for uname in $ulist         //遍历名单中的员工  
do                      
  a=`ls -lh /home/$uname | awk '{print $2}'`    //获取员工宿主目录下的内存占用大小
  if [ "$a" != "0" ]                    //如果用量不为0,说明有文件在其中,
  then cp -r /home/$uname /userfile_backup       //备份目录下的文件
  fi
  userdel -r $uname &> /dev/null           //连带宿主目录删除用户
done
~ 
[root@client1 ~]# chmod +x uesrdel.sh    
[root@client1 ~]# ./uesrdel.sh       //执行脚本

検証結果
ここに写真の説明を挿入

一方

1.名前がstu1、stu2 ...である20人のユーザーを追加します。

[root@client1 ~]# vi stu.sh
#!/bin/bash
i=1
while [ $i -le 20 ]     //控制循环次数,创建的用户数    
do
  uname="stu$i"      //赋值用户名给变量
  useradd $uname     
  let i++
done
~      

検証結果
ここに写真の説明を挿入

次に、商品の価格を推測します

[root@client1 ~]# vi pricegame.sh
#!/bin/bash
price=$(expr $RANDOM % 1000)   //利用系统的随机变量随机赋值一个价格,取余结果在0-999之间
times=0                    //统计猜测次数首先赋值为1
echo "商品的实际价格在0-999之间,猜猜是多少"
while true                //true 作为无限循环,因为不知道猜测次数
do
  read -p "请输入你猜测的价格:" INT      //提示从键盘输入价格
  let times++                         //一次价格,猜测次数加一次,times=times+1
  if [ $INT -eq $price ] ; then       //价格相等时
    echo "答对了,实际价格是$price,你总共猜测了$times次" 
    exit 0                            //猜对时用exit 0 退出循环
  elif [ $INT -gt $price ] ; then     //输入价格大于实际价格
    echo "太高了"
  else                //输入价格小于实际价格
    echo "太低了"
  fi
done
[root@client1 ~]# chmod +x pricegame.sh  //添加执行权限

試験結果
ここに写真の説明を挿入

おすすめ

転載: blog.csdn.net/qq_41786285/article/details/108728005