一些基础但有趣的shell脚本 您所在的位置:网站首页 shell好玩的脚本 一些基础但有趣的shell脚本

一些基础但有趣的shell脚本

2023-12-07 01:27| 来源: 网络整理| 查看: 265

一.打印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 .

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

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=1;i--)) 37 do 38 for((j=1;j


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有