一、打印九九乘法表
方法一面試
#外層循環表示9行 for row in `seq 9` do #裏層循環表示列 for col in `seq $row` do echo -e $row x $col = "$[ row*col ]\t\c" done echo done
方法二:shell
for((i=1;i<=9;i++));do for((j=1;j<=i;j++));do echo -ne "$j X $i = $((i*j))\t";done;echo;done;
方法三:awk寫法服務器
awk 'BEGIN{for(i=1;i<=9;i++){for(j=1;j<=i;j++){printf "%s %-4d","j x i =",i*j}printf "\n"}}'
二、國際象棋棋盤app
#輸入1爲兩個空格 read -p "輸入每一個方格的大小(2space=1):" weight #八行國際象棋 for i in `seq 8`;do for j in `seq $weight`;do #奇數行爲紅 綠 紅 綠 .... if [ "$[i%2]" = 1 ];then colour1=41 #紅色 colour2=42 #綠色 else #偶數行爲 綠紅 綠紅 .... colour1=42 colour2=41 fi for k in `seq 4`;do #每行8個方塊 for n in `seq $weight`;do #打印2個方塊 echo -ne "\033[${colour1}m \033[0m" done for m in `seq $weight`;do #打印2個方塊 echo -ne "\033[${colour2}m \033[0m" done done echo
三、打印等腰三角形dom
read -p "請輸入三角形的行數:" line for i in `seq $line` do space=`echo $[line-i]` for j in `seq $space` do echo -n ' ' done for k in `seq $[$i*2-1]` do echo -n '*' done echo done
四、打印下圖ide
num=9 for i in `seq 1 $num`;do let j=2*$i-1 let m=10-$i for l in `seq 1 $m` ;do echo -e " \c" done for k in `seq 1 $j`;do let n=$i%2 if [ $n -eq 0 ];then echo -ne "\e[1;5;3$[i]m$i\e[0m" elif [[ $k -eq 1||$k -eq $j ]];then echo -ne "\e[1;5;3$[i]m$i\e[0m" else echo -ne "\e[1;3$[i]m$i\e[0m" fi done echo done unset i unset j unset k unset l let j=$num/2-1 for i in `seq 1 $j`;do echo -e "\e[1;3$[i]m 666\\e[0m" done echo -e "\e[1;34m 66666\\e[0m"
五、打印下圖ui
#輸入三角形邊長(n個*) read -p "Please input the triangle side " n #遍歷n行三角形 for i in `seq $n` do #打印空格 for j in `seq $[n-i]` do echo -e " \c" done #除第一行外打印一個星號 if [[ "$i" -ne 1 ]]; then echo -e "*\c" fi #除第一行和最後一行打印空格 if [[ "$i" -ne 1 && "$i" -ne "$n" ]]; then { for k in `seq $[2*(i-1) -1]` do echo -e " \c" done } fi #最後一行打印星號 if [[ "$i" -eq "$n" ]]; then { k=0 for k in `seq $[2*i-3]` do echo -e "*\c" done } fi echo -e "*" done
六、每隔30秒監控httpd服務是否啓動,若是沒啓動就啓動httpd服務spa
sleeptime=30 while true do if killall -0 httpd &> /dev/null;then true else systemctl restart httpd time=`date +"%F %T" ` echo "httpd service at "$time" is restarted" >> /app/http.log fi sleep "$sleeptime" done
讓腳本在後臺執行不影響前臺正常工做
nohup ./root/scripts/monhttpd.sh &3d
七、將鏈接服務器次數不少次的客戶端IP加入防火牆rest
while true do ss -nt | grep ESTAB | tr -s " " ":" | cut -d: -f6 | sort | uniq -c | while read num ip do if [ "$num" -gt 2 ];then iptables -A INPUT -s "$ip" -j REJECT fi done sleep 3 done
八、後續六個字符串:efbaf275cd、4be9c40b8b、 44b2395c4六、f8c8873ce0、b902c16c8b、ad865d2f63是經過對隨機數變量RANDOM隨機執行命令:
echo $RANDOM|md5sum|cut –c1-10
i=1 while [ "$i" -le 32767 ];do ranmd5=`echo $i | md5sum | cut -c1-10` case ${ranmd5} in efbaf275cd) echo $i md5 is efbaf275cd ;; 4be9c40b8b) echo $i md5 is 4be9c40b8b ;; 44b2395c46) echo $i md5 is 4be9c40b8b ;; f8c8873ce0) echo $i md5 is 4be9c40b8b ;; b902c16c8b) echo $i md5 is 4be9c40b8b ;; ad865d2f63) echo $i md5 is 4be9c40b8b ;; esac let i++; done
九、編寫腳本,利用變量RANDOM生成10個隨機數字,輸出這個10數字,並顯示其中的最大值和最小值(隨機數最大值32767)
i=1 while [ "$i" -le 10 ];do random=`echo $RANDOM` echo $random if [ "$i" = 1 ];then max=$random min=$random else if [ "$random" -gt "$max" ];then max="$random" elif [ "$random" -lt "$min" ];then min="$random" fi fi let i+=1 done echo "max is $max" echo "min is $min"
十、while循環建立菜單
cat <<EOF 1 gbjd 2 yxrs 3 zizhu 4 liyu 5 quit EOF while read -p "please input menu number: " menu;do case $menu in 1|2) echo "The price is 15" ;; 3) echo "The price is 50" ;; 4) echo "The is is 30" ;; 5) break ;; *) echo "please input again " ;; esac done
select 循環主要用於建立菜單,按數字順序排列的菜單項將顯示在標準錯誤上,並顯示 PS3 提示符,等待用戶輸入
PS3="please input a menu number: " select num in huimian mers jdt jikuai quit;do reply=`echo $REPLY` echo "--------- $reply" case "$reply" in 1|2|huimian|mers) echo "The price is 15" ;; 3|jdt) echo "The price is 50" ;; 4|jikuai) echo "The is is 30" ;; 5) break ;; *) echo "your input is $reply" echo "please input again " ;; esac done
十一、求100之內全部奇數之和
for ((sum=0,i=1;i<100;i+=2));do let sum+=i;done;echo $sum
十二、求100之內全部能被3整除的數之和
sum=0;i=0;while [ $i -lt 100 ];do let sum+=i;let i+=3;done; echo $sum
1三、隨機生成10之內的數字,實現猜字遊戲,提示比較大或小,相等則退出
方法一
random=`echo $[RANDOM%10]` read -p "please guess a num: " num while [ $num -ne $random ];do if [ $num -gt $random ];then echo "your num is too big" read -p "please guess a num again: " num elif [ $num -lt $random ];then echo "your num is too small" read -p "please guess a num again : " num fi done echo -e "\033[31mcongratulation! \033[31m"
方法二