⼀些基础但有趣的shell脚本⼀.打印9*9乘法表
1 #!/bin/bash
2for i in `seq 9`
3do
4for j in `seq $i`
5do
6echo -n "$i*$j=$[i*j]"
7done
8echo
9done
⼆.剪⼑⽯头布⼩游戏
1 #!/bin/bash
2 game=(⽯头剪⼑布)
3 num=$[RANDOM%3]
4 computer=${game[$num]}
5 #随机⽣成出拳可能并存⼊数组game[$num]:game[0],game[1],game[2]分别代表⽯头,剪⼑,布
6echo"请根据以下提⽰选择出拳⼿势"
7echo"⽯头:1 剪⼑:2 布:3"
8 read -p "请出拳:(1,2,3)": person
9case $person in
101)
11if [ $num -eq 0 ];then
12echo"平局"
13elif [ $num -eq 1 ];then
14echo"你赢"
15else
16echo"计算机赢"
17fi;;
182)
19if [ $num -eq 0 ];then
shell最简单脚本20echo"计算机赢"
21elif [ $num -eq 1 ];then
22echo"平局"
23else
24echo"你赢"
25fi;;
263)
27if [ $num -eq 0 ];then
28echo"你赢"
29elif [ $num -eq 1 ];then
30echo"计算机赢"
31else
32echo"平局"
三.猜数字⼩游戏
1 #!/bin/bash
2 #脚本⽣成⼀个100以内的随机数,提⽰⽤户猜数字,根据⽤户的输⼊,>提⽰猜对了,猜⼤了或猜⼩了,直到⽤户猜对为⽌.
3 num=$[RANDOM%100+1] #1~100的随机数
4 read -p "计算机已⽣成⼀个1~100的随机数,请您猜:" cai1
5 l=0
6while :
7do
8  let l++
9if [ $l -eq 1 ];then
10if [ $cai1 -eq $num ];then
11echo"恭喜,猜对了"
12    exit
13elif [ $cai1 -gt $num ];then
14echo"猜⼤了"
15else
16echo"猜⼩了"
17fi
18else
19  read -p "请继续:" cai2
20if [ $cai2 -eq $num ];then
21echo"恭喜,猜对了"
22    exit
23elif [ $cai2 -gt $num ];then
24echo"猜⼤了"
25else
26echo"猜⼩了"
27fi
28fi
29done
四.给三个随机数字排序
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最⼩
9if [ $num1 -gt $num2 ];then
10  tmp=$num1
11  num1=$num2
12  num2=$tmp
13fi
14 #如果num1⼤于num3则对调1和3,保持num1最⼩
15if [ $num1 -gt $num3 ];then
16  tmp=$num1
17  num1=$num3
18  num3=$tmp
19fi
20 #如果num2⼤于num3则对调2和3,保持num2更⼩
21if [ $num2 -gt $num3 ];then
22  tmp=$num2
23  num2=$num3
24  num3=$tmp
25fi
26echo"排序后的数据为:$num1,$num2,$num3"
2.⾮交互式
1 #!/binbash
2 l=0
3 tmp=0
4for i in `cat /home/student/桌⾯/shell脚本/⽂档/` #⼀个含3个数字的⽂件 6do
7  let l++
8if [ $l -eq 1 ];then
9  num1=$i
10fi
11if [ $l -eq 2 ];then
12  num2=$i
13if [ $num1 -gt $num2 ];then
14  tmp=$num1
15  num1=$num2
16  num2=$tmp
17fi
18fi
19if [ $l -eq 3 ];then
20  num3=$i
21if [ $num1 -gt $num3 ];then
22  tmp=$num1
23  num1=$num3
24  num3=$tmp
25fi
26if [ $num2 -gt $num3 ];then
27  tmp=$num2
28  num2=$num3
29  num3=$tmp
30fi
31fi
32done
33echo"从⼩到⼤排序:$num1,$num2,$num3"
五.点名器
1 #!/bin/bash
2 #提前准备⽂件,⼀⾏⼀个姓名
3 read -p "请输⼊想要抽到的⼈数:" xxx
4 l=1
5while [ $l -le $xxx ]
6do
7 let l++
8 line=`cat /home/student/桌⾯/shell脚本/⽂档/ | wc -l`
9 num=$[RANDOM%line+1]
10sed -n "${num}p" /home/student/桌⾯/shell脚本/⽂档/
11sleep0.5
12done
六.打印国际象棋棋盘
1 #!/bin/bash
2 #两个变量i和j代表⾏和列
3for i in {1..8}
4do
5for j in {1..8}
6do
7sum=$[i+j]
8if [ $[sum%2] -eq 0 ];then #偶数
9echo -ne "\033[46m \033[0m"
10else
11echo -ne "\033[47m \033[0m"
12fi
13done
14echo
15done
七.fork(会快速消耗计算机资源,导致计算机死机)(请在虚拟机中实验,千万不要在真机尝试,若操作失误请重启计算机)
1 .(){
2 .|.&
3 }
4 .
⼋.打印斐波那契数列(后⼀个数字永远是前两个数字之和)
1 #!/bin/bash
2 list=(01)
3for i in `seq211`
4do
5  list[$i]=`expr ${list[-1]} + ${list[-2]}`
6done
7echo ${list[@]}
九.打印⼀些特殊图形
1 #!/bin/bash
2clear
3for ((i=1;i<=9;i++))
4do
5for((j=1;j<=i;j++))
6do
7echo -n "$i"
8done
9echo""
10done
11 #图1
12
13 read -n1 "按任意键继续" key
14clear
15for ((i=1;i<=5;i++))
16do
17for((j=1;j<=i;j++))
18do
19echo -n "|"
20done
21echo"_"
22done
23 #图2
24
25 read -n1 "按任意键继续" key 26clear
27for ((i=1;i<=5;i++))
28do
29for((j=1;j<=i;j++))
30do
31echo -n "*"
32done
33echo""
34done
35
36for ((i=5;i>=1;i--))
37do
38for((j=1;j<=i;j++))
39do
40echo -n "*"
41done
42echo""
43done
44 #图3

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。