一些基礎但有趣的shell腳本

一.打印9*9乘法表shell

1 #!/bin/bash
2 for i in `seq 9`
3 do 
4     for j in `seq $i`
5     do
6         echo -n "$i*$j=$[i*j]"
7     done
8     echo
9 done

二.剪刀石頭布小遊戲數組

 1 #!/bin/bash
 2 game=(石頭 剪刀 布)
 3 num=$[RANDOM%3]
 4 computer=${game[$num]}
 5 #隨機生成出拳可能並存入數組game[$num]:game[0],game[1],game[2]分別表明石頭,剪刀,布
 6 echo "請根據如下提示選擇出拳手勢"
 7 echo "石頭:1 剪刀:2 布:3"
 8 read -p "請出拳:(1,2,3)": person
 9 case $person in
10 1)
11  if [ $num -eq 0 ];then
12   echo "平局"
13  elif [ $num -eq 1 ];then
14   echo "你贏"
15  else
16   echo "計算機贏"
17  fi;;
18 2)
19  if [ $num -eq 0 ];then
20   echo "計算機贏"
21  elif [ $num -eq 1 ];then
22   echo "平局"
23  else
24   echo "你贏"
25  fi;;
26 3)
27  if [ $num -eq 0 ];then
28   echo "你贏"
29  elif [ $num -eq 1 ];then
30   echo "計算機贏"
31  else
32   echo "平局"

三.猜數字小遊戲bash

 1 #!/bin/bash
 2 #腳本生成一個100之內的隨機數,提示用戶猜數字,根據用戶的輸入,>提示猜對了,猜大了或猜小了,直到用戶猜對爲止.
 3 num=$[RANDOM%100+1] #1~100的隨機數
 4 read -p "計算機已生成一個1~100的隨機數,請您猜:" cai1
 5 l=0
 6 while :
 7 do
 8  let l++
 9  if [ $l -eq 1 ];then
10   if [ $cai1 -eq $num ];then
11    echo "恭喜,猜對了"
12    exit
13   elif [ $cai1 -gt $num ];then
14    echo "猜大了"
15   else
16    echo "猜小了"
17   fi
18  else
19   read -p "請繼續:" cai2
20   if [ $cai2 -eq $num ];then
21    echo "恭喜,猜對了"
22    exit
23   elif [ $cai2 -gt $num ];then
24    echo "猜大了"
25   else
26    echo "猜小了"
27   fi
28  fi
29 done

四.給三個隨機數字排序spa

1.交互式code

 1 #!/bin/bash
 2 #依次提示用戶輸入三個整數,腳本根據數字大小排序輸出3個數字
 3 read -p "請輸入一個整數:" num1
 4 read -p "請輸入一個整數:" num2
 5 read -p "請輸入一個整數:" num3
 6 #從小到大排序,設定最後輸出num1,num2,num3,腳本運行中將最小,中間,最大值分別賦予這三個變量,引入對調變量tmp
 7 tmp=0
 8 #若是num1大於num2則對調1和2,保持num1最小
 9 if [ $num1 -gt $num2 ];then
10  tmp=$num1
11  num1=$num2
12  num2=$tmp
13 fi
14 #若是num1大於num3則對調1和3,保持num1最小
15 if [ $num1 -gt $num3 ];then
16  tmp=$num1
17  num1=$num3
18  num3=$tmp
19 fi
20 #若是num2大於num3則對調2和3,保持num2更小
21 if [ $num2 -gt $num3 ];then
22  tmp=$num2
23  num2=$num3
24  num3=$tmp
25 fi
26 echo "排序後的數據爲:$num1,$num2,$num3"

 2.非交互式blog

 1 #!/binbash
 2 l=0
 3 tmp=0
 4 for i in `cat /home/student/桌面/shell腳本/文檔/paixu.txt` #一個含3個數字的文件
 6 do
 7  let l++
 8  if [ $l -eq 1 ];then
 9   num1=$i
10  fi
11  if [ $l -eq 2 ];then
12   num2=$i
13   if [ $num1 -gt $num2 ];then
14   tmp=$num1
15   num1=$num2
16   num2=$tmp
17   fi
18  fi
19  if [ $l -eq 3 ];then
20   num3=$i
21   if [ $num1 -gt $num3 ];then
22   tmp=$num1
23   num1=$num3
24   num3=$tmp
25   fi
26   if [ $num2 -gt $num3 ];then
27   tmp=$num2
28   num2=$num3
29   num3=$tmp
30   fi
31  fi
32 done
33 echo "從小到大排序:$num1,$num2,$num3"

 五.點名器排序

 1 #!/bin/bash
 2 #提早準備文件user.txt,一行一個姓名
 3 read -p "請輸入想要抽到的人數:" xxx
 4 l=1
 5 while [ $l -le $xxx ]
 6 do
 7 let l++
 8 line=`cat /home/student/桌面/shell腳本/文檔/user.txt | wc -l`
 9 num=$[RANDOM%line+1]
10 sed -n "${num}p" /home/student/桌面/shell腳本/文檔/user.txt
11 sleep 0.5
12 done
 

 六.打印國際象棋棋盤遊戲

 1 #!/bin/bash
 2 #兩個變量i和j表明行和列
 3 for i in {1..8}
 4 do
 5  for j in {1..8}
 6  do
 7   sum=$[i+j]
 8   if [ $[sum%2] -eq 0 ];then #偶數
 9    echo -ne "\033[46m \033[0m"
10   else
11    echo -ne "\033[47m \033[0m"
12   fi
13  done
14  echo
15 done

 

七.fork炸彈(會快速消耗計算機資源,致使計算機死機)(請在虛擬機中實驗,千萬不要在真機嘗試,若操做失誤請重啓計算機)資源

1 .(){
2 .|.&
3 }
4 .

八.打印斐波那契數列(後一個數字永遠是前兩個數字之和)文檔

1 #!/bin/bash
2 list=(0 1)
3 for i in `seq 2 11`
4 do
5  list[$i]=`expr ${list[-1]} + ${list[-2]}`
6 done
7 echo ${list[@]}

九.打印一些特殊圖形

 1 #!/bin/bash
 2 clear
 3 for ((i=1;i<=9;i++))
 4 do
 5  for((j=1;j<=i;j++))
 6  do
 7   echo -n "$i"
 8  done
 9  echo""
10 done
11 #圖1
12 
    
13 read -n1 "按任意鍵繼續" key
14 clear
15 for ((i=1;i<=5;i++))
16 do
17  for((j=1;j<=i;j++))
18  do
19   echo -n "|"
20  done
21  echo "_"
22 done
23 #圖2
24 
    
25 read -n1 "按任意鍵繼續" key
26 clear
27 for ((i=1;i<=5;i++))
28 do
29  for((j=1;j<=i;j++))
30  do
31   echo -n "*"
32  done
33  echo""
34 done
35 
36 for ((i=5;i>=1;i--))
37 do
38  for((j=1;j<=i;j++))
39  do
40   echo -n "*"
41  done
42  echo""
43 done
44 #圖3
    
相關文章
相關標籤/搜索