十、while回圈及應用實踐
(一)while回圈語法
while 回圈語法:
while <條件運算式>
do
指令
done
(二)范例1:
每隔2s輸出系統負載情況,
[root@centos6-kvm3 scripts]# cat 10-01.sh
#!/bin/bash
while true
do
uptime >>/tmp/oldboy.log
sleep 2
done
[root@centos6-kvm3 scripts]#
1、腳本執行的方法
| 用法 | 說明 |
|---|---|
| sh while1.sh & | 把腳本while1.sh放到后臺執行(后臺運行腳本時常用)* |
| nohup while1.sh & | 使用nohup 把腳本while.sh放到后臺執行, |
| ctl+c | 停止執行當前腳本或者任務 |
| ctl+z | 暫停執行當前腳本或者任務 |
| bg | 把當前腳本或者任務放到后臺執行,bg可以理解為backround |
| fg | 把當前腳本或者任務拿到前臺執行,如果有多個任務,可以使用fg加任務編號調出對應腳本任務,如fg 2,調出第二個腳本任務,fg可以理解為frontground |
| jobs | 查看當前執行的腳本或者任務 |
| kill | 關閉執行的腳本任務,即以“kill %任務編號”的形式關閉腳本,這個任務標號,可以通過jobs獲得, |
后臺運行 & ,nohup,screen(運維人員)
常用命令:
- kill,killall,pkill :殺掉行程
- ps:查看行程,
- pstree:顯示行程狀態樹,
- top:顯示行程,
- renice:改變優先權,
- nohup:用戶退出系統之后繼續作業,
- pgrep:查找匹配條件的行程,
- strace:跟蹤一個行程的系統呼叫情況,
- ltrace:跟蹤行程呼叫庫函式的情況,
(三)范例2:
請使用while回圈對下面的腳本進行修改,使得當執行腳本時,每次執行完腳本以后不退出腳本了,而是繼續提示用戶輸入,
[root@centos6-kvm3 scripts]# cat 10-02.sh
#!/bin/bash
while true
do
read -t 15 -p "please input two number:" a b
expr $a + $b + 2 &>/dev/null
if [ $? -ne 0 ]
then
echo "usage:$0 please input two number."
continue
fi
if [ -z "$b" ]
then
echo "usage:$0 please input two number."
continue
fi
echo "a-b=$(($a-$b))"
echo "a+b=$(($a+$b))"
echo "a*b=$(($a*$b))"
echo "a/b=$(($a/$b))"
echo "a**b=$(($a**$b))"
echo "a%b=$(($a%$b))"
done
[root@centos6-kvm3 scripts]#
(四)范例3:
猜數字游戲,首先讓系統隨機生成一個數字,給這個數字定一個范圍(1-60),讓用戶輸入猜的數字,對輸入進行判斷,如果不符合要求,就給予高或低的提示,猜對后則給出猜對用的次數,請用while陳述句實作,
[root@centos6-kvm3 scripts]# cat 10-04.sh
#!/bin/bash
random=$((RANDOM%60))
count=0
while true
do
read -p "please input a num:" num
((count+=1))
if [ $random -lt $num ]
then
echo "你猜大了"
elif [ $random -gt $num ]
then
echo "你猜小了"
else
echo "你猜對了,NB!共計猜了${count}次!"
exit 1
fi
done
[root@centos6-kvm3 scripts]#
(五)范例4:
分析Apache訪問日志(access_2010-12-8.log),把日志中每行的訪問位元組數對應欄位數字相加,計算出總的訪問量,
[root@centos6-kvm3 scripts]# cat 10-05.sh
#!/bin/bash
sum=0
awk '{print $10}' access_2010-12-8.log | grep -v - >./oldboy.log
while read line
do
((sum=sum+line))
done <./oldboy.log
echo $sum
[root@centos6-kvm3 scripts]# sh 10-05.sh
1380681
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/91686.html
標籤:Linux
