幾個經典的shell指令碼
阿新 • • 發佈:2021-09-27
實現指令碼同步
#!/bin/env bash # 該指令碼用於時間同步 ntp-server=10.1.1.1 count=0 while true do ntpdate $ntp-srever &>/dev/null if [ $? -ne 0 ];then echo "system date failed" |mail -s "check system date" root@lijingtest-VirtualBox else let count++ if [ $count -eq 2 ];then echo "system date success" |mail -s "check system date" root@lijingtest-VirtualBox && count=0 fi fi sleep 3 done
until迴圈
until迴圈與while迴圈恰好相反,until在條件不成立時才進行迴圈,一旦判斷條件成立,就終止迴圈
用法如下:
until condition
do
command
done
執行流程:
對condition進行判斷,條件成立時,不執行command;若條件不成立,則進入迴圈
執行到done時,重新判斷condition是否成立,不成立再次進入迴圈
若一開始條件就成立,則直接不執行do done之間的程式碼
eg:求1-100的整數和
#!/bin/bash i=1 sum=0 until ((i>100)) do sum+=i i++ done echo "sum is:$sum"
隨機數
如何生成隨機數
系統變數 RANDOM 默產生0-32767的隨機整數
實戰案例
隨機產生以139開頭的電話號碼
具體需求
寫一個指令碼,產生一個phonenum.txt檔案,隨機產生以139開頭的手機號1000個,每個一行。
思路
產生1000個電話號碼,指令碼需要迴圈1000次 for while until
139+8位,後8位隨機產生,可以讓每一位數字都隨機產生 echo $[$RANDOM%10]
將隨機產生的數字儲存到變數裡,然後加上139儲存到檔案裡
實現
#!/bin/bash #隨機產生1000個以139開頭的號碼並儲存到檔案中 file=/root/phonenum.txt for ((i=1;i<=1000;i++)) do n1=$[#RANDOM%10] n2=$[#RANDOM%10] n3=$[#RANDOM%10] n4=$[#RANDOM%10] n5=$[#RANDOM%10] n6=$[#RANDOM%10] n7=$[#RANDOM%10] n8=$[#RANDOM%10] echo "139$n1$n2$n3$n4$n5$n6$n7$n8" >>$file done
隨機抽取五位幸運觀眾
在上面的1000個電話號碼中隨機抽取5個幸運觀眾,並展示出來 中間4位數字用*代替
#!/bin/bash
#隨機抽取五位幸運觀眾
phone=/root/phonenum.txt
for ((i=1;i<=5;i++))
do
line=`wc -l $phone |cut -d' ' -f1`
luck_link=$[RABDOM%$line+1]
luck_num=`head -$luck_line $phone|tail -1`
echo "139****${luck_num:7:4}"
echo $luck_num >> luck.txt
sed -i "/$luck_num/d" $phone
done