1. 程式人生 > >shell(3)應用

shell(3)應用

times chmod tdi 列表 dom pad you 地址 模式

Shell腳本(三)

一?for循環語句:(循環次數未知)

for 變量名取值列表
do
命令序列
done

(1) 根據姓名列表批量添加用戶
vim /root/user.txt
?
zhangsan
wangwu
xiaobai
vim /root/uadd.sh
#!/bin/bash
ULIST=$(cat /root/user.txt)
for uname in $ULIST
do
useradd $uname
echo "123456" | passwd --stdin $uname&>/dev/null
done
sh /root/uadd.sh
cat /etc/passwd

① 制定員工列表文件

② 編寫腳本(for循環語句格式)

③ 執行腳本

(2) 根據IP地址檢查主機狀態
vim /root/ipadds.txt
192.168.1.1
192.168.1.2
192.168.10.1
vim chkhosts.sh
#!/bin/bash
HLIST=$(cat /root/ipadds.txt)
for IP in $HLIST
do
ping -c 3 -i 0.2 -W 3 $IP &>/dev/null
if [ $? -eq 0 ]
then echo "host $IP is up"
else echo "host $IP is down"
fi
done
chmod +x chkhosts.sh

sh chkhosts.sh

① 制定IP地址列表

② 編寫腳本(for循環語句格式)

③ 執行腳本

二?while循環語句:(循環次數已知)

while 條件測試
do
命令序列
done

(1) 批量添加有規律編號的用戶:
① 使用I控制用戶名稱的編號
② 在循環內部通過let ++ (等同於 i= ‘expr $i + 1’ )來使i增加,以此類推。

(2) 猜價格遊戲:
vim /pricegame.sh
#!/bin/bash
price=$(expr $RANDOM % 1000 )
times=0
echo "price between 0 and 999 pelease input it "

while true
do
read -p "input price:" int
let times++
if [ $price -eq $int ] ; then
echo "yes,you are right."
echo "you have anwser $times time"
exit 0
elif [ $int -gt $price ] ; then
echo "price is too high"
else
echo "price is too low"
fi
done
chmod +x /pricegame.sh
./pricegame.sh

① 通過環境變量RANDOM可獲得一個小於2的十六次方的隨機整數,計算其與1000的余數可以獲得0~999的隨機價格
② 反復測試操作可以通過一ture作為測試條件的while循環實現
③ 當用戶猜中事中止操作
④ 使用變量來幾率操作次數

三?case分支語句:

case 變量值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
……
*)
默認命令序列
esac

(1) 擊鍵類型識別(case 分支語句格式):

(2) 編寫系統服務腳本(case 分支語句格式):

vim /myprogs
case "$1" in
start)
echo -n "zhengzai qi dong $sleep fuwu"
if sleep 7200 &
then
echo "OK"
fi
;;
stop)
echo -n "zheng guan bi dong sleep fuwu"
pkill "sleep" &/dev/null
echo "OK"
;;
status)
if pgrep "sleep" &>dev/null
then
echo "fuwuyikaiqi"
else
echo "fuwuyitongzhi"
fi
;;
restart)
$0 stop
$0 start
;;
*)
echo "tongaf: $0 {start|stop|restart|status}"
esac
chmod +x /myprogs
./myprogs start
./myprogs status
./myprogs stop

shell(3)應用