1. 程式人生 > 其它 >2022每天學習一個shell小指令碼---bash shell指令碼資料夾

2022每天學習一個shell小指令碼---bash shell指令碼資料夾

#!/bin/bash
#批量建立使用者
read -p "Enter The Users Password : " PASSWD

for UNAME in `cat users.txt`
do
id $UNAME &> /dev/null
if [ $? -eq 0 ] ; then
echo "Already exists"
else
useradd $UNAME &> /dev/null
echo "$PASSWD" | passwd --stdin $UNAME &> /dev/null
if [ $? -eq 0 ] ; then
echo "$UNAME , Create success"
else
echo "$UNAME , Create failure"
fi
fi
done

##############################
#!/bin/bash
#猜數字的小遊戲
PRICE=$(expr $RANDOM % 1000)
#使用$RANDOM變數來調取出一個隨機的數值(範圍為0~32767),將這個隨機數對1000進行取餘操作,並使用expr命令取得其結果
TIMES=0
#建立TIMES變數,用於累計使用者猜數字的次數
echo "商品實際價格為0-999之間,猜猜看是多少?"
while true
do

read -p "請輸入您猜測的價格數目:" INT
#read讀取輸入的數值
let TIMES++
#TIMES變數自增1,即猜數字次數累計1次
if [ $INT -eq $PRICE ] ; then
#如果輸入的數字跟隨機生成的數字一致,說明猜對了。
echo "恭喜您答對了,實際價格是 $PRICE"
echo "您總共猜測了 $TIMES 次"
exit 0
#終止指令碼執行
elif [ $INT -gt $PRICE ] ; then
#輸入數字比生成數字高,提示太高
echo "太高了!"
else
#兜底,既猜不對數字,又不是比生成數字高,那就是太低了
echo "太低了!"
fi
done

##############################

Checkkeys.sh

#!/bin/bash
#用case語句和萬用字元判斷使用者輸入的字元是數字、字母還是其他字元。
read -p "請輸入一個字元,並按Enter鍵確認:" KEY
case "$KEY" in
[a-z]|[A-Z])
#如果輸入的字元(只能是1位,aD則會跳到兜底)是大寫字母或者小寫字母,則輸出是字母
echo "您輸入的是 字母。"
;;

[0-9])
#如果是數字(只能1位,10、99等則會跳到兜底),則輸出是數字
echo "您輸入的是 數字。"
;;

*)
#兜底,輸出其他字元
echo "您輸入的是 空格、功能鍵或其他控制字元。"
esac

##############################

findLogin_Users.sh

#找出/etc/passwd中能登入的使用者,並將對應在/etc/shadow中第二列密碼提出處理
#!/bin/bash
shells=awk -F: '$7!~"nologin"{print $1","$7}' /etc/passwd
for shell in $shells
do
if [[ "grep -v '^#' /etc/shells" =~ "echo $shell | cut -d, -f2" ]]; then
users="$users echo $shell | cut -d, -f1"
fi
done
for user in $users
do
awk -F: -v u=$user '$1~u{print $1,$2}' /etc/shadow
done