linux中shell的迴圈
阿新 • • 發佈:2018-12-28
迴圈主要分為3種,借幾個指令碼來理解一下
1.for
1)10秒倒計時指令碼
#!/bin/bash
for ((a=10;a>0;a--))
do
echo -n " TIME $a"
echo -ne "\r \r"
sleep 1
done
2)如果想要自己輸入的時間為倒計時呢
#!/bin/bash read -p "please input the time you want count,eg 01 10 " i j a=$i*60+$j for ((b=$a;b>0;b--)) do echo -n " TIME $[b/60]:$[b%60] " echo -ne "\r" sleep 1 done
3)九九乘法表
#!/bin/bash
##列印9*9乘法表
#1*1=1
#2*1=2 2*2=4
#3*1=3 3*2=6 3*3=9
for i in $(seq 9)
do
for j in $(seq $i)
do
echo -ne "$i*$j=$(($i*$j))\t"
done
echo -e "\n"
done
4)巢狀迴圈
#!/bin/bash for((a=1;a<=3;a++)) do echo "Starting outside loop: $a" for((b=1;b<=3;b++)) do echo "Inside loop: $b" done done
2.if-else
1)如果用話存在輸出,hello+使用者名稱
#!/bin/bash
user=kiosk
if grep $user /etc/passwd;then
echo "Hello $user"
fi
2)檢測student使用者是否存在,存在顯示家目錄的內容
#!/bin/bash user=student if grep $user /etc/passwd;then echo "The files for user $user are:" ls -a /home/$user else echo "$user not exist!" fi
3)檢視是否被允許登陸
#!/bin/bash
if [ "$1" == "student" ];then
echo "Welcome $1"
elif [ "$1" == "westos" ];then
echo "Welcome $1"
elif [ "$1" == "kiosk" ];then
echo "Welcome $1"
elif [ "$1" == "linux" ];then
echo "Welcome $1"
else
echo "You are not allowed!"
fi
3.while
1)新建westos{1..20}使用者,並統一設定密碼
#!/bin/bash
PREFIX="westos"
i=1
while [ $i -le 20 ]
do
useradd -r ${PREFIX}$i &> /dev/null
echo "123456" | passwd --stdin ${PREFIX}$i &> /dev/null
((i++))
done
2)隔2秒輸出依次系統啟動時間
#!/bin/bash
while true
do
uptime
sleep 2
done
4.case
1)如果是允許使用者輸出允許,不是的話,輸出sorry
#!/bin/bash
case $1 in
student|kiosk|linux|westos)
echo "Welcome,$1"
;;
*)
echo "sorry!"
;;
esac
5.練習題
運用本節所學內容,寫一個互動式程式
#!/bin/bash
while true
do
echo -e "
\033[31m A 顯示主機IP \033[0m
\033[32m B 顯示磁碟剩餘空間 \033[0m
\033[33m C 顯示系統執行時間 \033[0m
\033[34m Q 退出系統 \033[0m
"
read -p "請輸入你的選擇:" char
case $char in
a|A)
ifconfig br0 | grep "inet " | awk '{print $2}'
;;
b|B)
df -h | awk 'NR==2{print "剩餘空間大小為:"$4}'
;;
c|C)
uptime |awk '{print $3}' | awk -F, '{print $1}' | awk -F: '{print "系統已經運行了"$1"小時"$2"分鐘"}'
;;
q|Q)
exit 0
;;
esac
done
OK~