一些基础但有趣的shell脚本

一.打印9*9乘法表

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 "平局"

三.猜数字小游戏

 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

四.给三个随机数字排序

1.交互式

 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.非交互式

 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 .

八.打印斐波那契数列(后一个数字永远是前两个数字之和)

扫描二维码关注公众号,回复: 8439625 查看本文章
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
    

猜你喜欢

转载自www.cnblogs.com/cocl888/p/12157073.html