一些基础但有趣的shell脚本
一.打印9*9乘法表
#!/bin/bash
for i in `seq 9`
do
for j in `seq $i`
do
echo -n "$i*$j=$[i*j]"
done
echo
done
二.剪刀石头布小游戏
#!/bin/bash
2 game=(石头 剪刀 布)
num=$[RANDOM%]
computer=${game[$num]}
#随机生成出拳可能并存入数组game[$num]:game[],game[],game[]分别代表石头,剪刀,布
echo "请根据以下提示选择出拳手势"
echo "石头:1 剪刀:2 布:3"
read -p "请出拳:(1,2,3)": person
case $person in
)
if [ $num -eq ];then
echo "平局"
elif [ $num -eq ];then
echo "你赢"
else
echo "计算机赢"
fi;;
)
if [ $num -eq ];then
echo "计算机赢"
elif [ $num -eq ];then
echo "平局"
else
echo "你赢"
fi;;
)
if [ $num -eq ];then
echo "你赢"
elif [ $num -eq ];then
echo "计算机赢"
else
echo "平局"
三.猜数字小游戏
#!/bin/bash
#脚本生成一个100以内的随机数,提示用户猜数字,根据用户的输入,>提示猜对了,猜大了或猜小了,直到用户猜对为止.
num=$[RANDOM%+] #~100的随机数
read -p "计算机已生成一个1~100的随机数,请您猜:" cai1
l=
while :
do
let l++
if [ $l -eq ];then
if [ $cai1 -eq $num ];then
echo "恭喜,猜对了"
exit
elif [ $cai1 -gt $num ];then
echo "猜大了"
else
echo "猜小了"
fi
else
read -p "请继续:" cai2
if [ $cai2 -eq $num ];then
echo "恭喜,猜对了"
exit
elif [ $cai2 -gt $num ];then
echo "猜大了"
else
echo "猜小了"
fi
fi
done
四.给三个随机数字排序
1.交互式
#!/bin/bash
#依次提示用户输入三个整数,脚本根据数字大小排序输出3个数字
read -p "请输入一个整数:" num1
read -p "请输入一个整数:" num2
read -p "请输入一个整数:" num3
#从小到大排序,设定最后输出num1,num2,num3,脚本运行中将最小,中间,最大值分别赋予这三个变量,引入对调变量tmp
tmp=
#如果num1大于num2则对调1和2,保持num1最小
if [ $num1 -gt $num2 ];then
tmp=$num1
num1=$num2
num2=$tmp
fi
#如果num1大于num3则对调1和3,保持num1最小
if [ $num1 -gt $num3 ];then
tmp=$num1
num1=$num3
num3=$tmp
fi
#如果num2大于num3则对调2和3,保持num2更小
if [ $num2 -gt $num3 ];then
tmp=$num2
num2=$num3
num3=$tmp
fi
echo "排序后的数据为:$num1,$num2,$num3"
2.非交互式
#!/binbash
l=
tmp=
for i in `cat /home/student/桌面/shell脚本/文档/paixu.txt` #一个含3个数字的文件
do
let l++
if [ $l -eq ];then
num1=$i
fi
if [ $l -eq ];then
num2=$i
if [ $num1 -gt $num2 ];then
tmp=$num1
num1=$num2
num2=$tmp
fi
fi
if [ $l -eq ];then
num3=$i
if [ $num1 -gt $num3 ];then
tmp=$num1
num1=$num3
num3=$tmp
fi
if [ $num2 -gt $num3 ];then
tmp=$num2
num2=$num3
num3=$tmp
fi
fi
done
echo "从小到大排序:$num1,$num2,$num3"
五.点名器
#!/bin/bash
#提前准备文件user.txt,一行一个姓名
read -p "请输入想要抽到的人数:" xxx
l=
while [ $l -le $xxx ]
do
let l++
line=`cat /home/student/桌面/shell脚本/文档/user.txt | wc -l`
num=$[RANDOM%line+]
sed -n "${num}p" /home/student/桌面/shell脚本/文档/user.txt
sleep 0.5
done
六.打印国际象棋棋盘
#!/bin/bash
#两个变量i和j代表行和列
for i in {..}
do
for j in {..}
do
sum=$[i+j]
if [ $[sum%] -eq ];then #偶数
echo -ne "\033[46m \033[0m"
else
echo -ne "\033[47m \033[0m"
fi
done
echo
done
七.fork炸弹(会快速消耗计算机资源,导致计算机死机)(请在虚拟机中实验,千万不要在真机尝试,若操作失误请重启计算机)
.(){
.|.&
}
.
八.打印斐波那契数列(后一个数字永远是前两个数字之和)
#!/bin/bash
list=( )
for i in `seq `
do
list[$i]=`expr ${list[-]} + ${list[-]}`
done
echo ${list[@]}
九.打印一些特殊图形
#!/bin/bash
clear
for ((i=;i<=;i++))
do
for((j=;j<=i;j++))
do
echo -n "$i"
done
echo""
done
#图1
read -n1 "按任意键继续" key
clear
for ((i=;i<=;i++))
do
for((j=;j<=i;j++))
do
echo -n "|"
done
echo "_"
done
#图2
read -n1 "按任意键继续" key
clear
for ((i=;i<=;i++))
do
for((j=;j<=i;j++))
do
echo -n "*"
done
echo""
done for ((i=;i>=;i--))
do
for((j=;j<=i;j++))
do
echo -n "*"
done
echo""
done
#图3
一些基础但有趣的shell脚本的更多相关文章
- linux基础—课堂随笔_03 SHELL脚本编程基础
shell脚本编程基础 条件选择:if语句 选择执行: 注意:if语句可嵌套 单分支 if(开头)判断条件:then条件为真的分支代码 fi(结尾) 双分支 if(开头)判断条件:then条件为真的分 ...
- Shell基础(一):Shell基础应用、简单Shell脚本的设计、使用Shell变量、变量的扩展应用
一.Shell基础应用 目标: 本案例要求熟悉Linux Shell环境的特点,主要练习以下操作: 1> 切换用户的Shell环境 2> 练习命令历史.命令别名 3 ...
- shell编程基础(三): 位置参数与shell脚本的输入输出
一.位置参数和特殊变量 有很多特殊变量是被Shell自动赋值的,我们已经遇到了$?和$1,现在总结一下: 常用的位置参数和特殊变量: $0 相当于C语言main函数的argv[0] $1.$2... ...
- 简单的 Shell 脚本入门教程
Shell脚本 运作方式与解释型语言相当,如果有语言基础,学起 Shell 脚本就非常容易,但是 Shell 与常见的语言不同,一些常见的函数在 Shell 中需要组合一些命令得以实现 工具推荐 Sh ...
- Shell脚本编程具体解释
第12章 Shell脚本编程 l Shell命令行的执行 l 编写.改动权限和运行Shell程序的步骤 l 在Shell程序中使用參数和变量 l 表达式比較.循环结构语句和条件结构语句 l ...
- Shell 脚本实现 Linux 系统监控
一.实验介绍 1.1 实验内容 本课程实现 shell 脚本监控系统的各项参数,并可以将脚本加入系统环境中,可以直接在终端里执行.还添加了几个参数,一个脚本可以执行不同的操作. 1.2 知识点 本实验 ...
- 学习 shell脚本之前的基础知识
转载自:http://www.92csz.com/study/linux/12.htm 学习 shell脚本之前的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写sh ...
- Linux shell脚本编程基础之练习篇
shell脚本编程基础之练习篇. 1.编写一个脚本使我们在写一个脚本时自动生成”#!/bin/bash”这一行和注释信息. #!/bin/bash ] then echo "请输入一个参数& ...
- shell脚本基础知识
虽然现在能在Linux系统下生存,但是自觉效率太低,和高手有很大的差距. 这就是关于Linux的知识太过匮乏,有很多事情知道该怎么做,但是就是没法在Linux下实现,为了提升工作效率,必须要接触Lin ...
随机推荐
- ASP.NET 模型验证2--验证部分属性
在开发MVC时,模型验证非常常见,平常我们用的应该都是全验证 if(ModelState.IsValid){ //验证成功要做的事 .....} 但是有时候我们需要部分验证,比如修改用户信息时,因为更 ...
- 用户登录(php)
<!DOCTYPE HTML><html><head><meta charset="utf-8"><script type=& ...
- python3练习100题——026
原题链接:http://www.runoob.com/python/python-exercise-example26.html 题目:利用递归方法求5!. 是25题递归方式的简化版所以很容易. 我的 ...
- form介绍
form组件的主要功能: 1.生成可用的html标签 2.对用户提交的数据进行效验 3.保留上次输入的内容 1.以普通方式手写注册功能 1.渲染前端标签获取用户输入 >>>>渲 ...
- OpenCV的视频读取
现在找一个能拍摄视频的设备真是太容易了.结果大家都用视频来代替以前的序列图像.视频可能由两种形式得到,一个是像网络摄像头那样实时视频流,或者由其他设备产生的压缩编码后的视频文件.幸运的是,OpenCV ...
- input:file上传文件类型(记录)
imput 属性有以下几种: 1.type:input类型这就不多说了2.accept:表示可以选择的文件类型,多个类型用英文逗号分开,常用的类型见下表. <input id="fil ...
- 12day echo {1..100} << 三剑客命令
04. 直接编辑文件命令方法 a 如何直接在文件中添加单行内容 echo "oldboy" >>/oldboy/oldboy.txt 补充: echo命令用法说明: 0 ...
- 解决for循环插入同一元素无法重复插入问题
var el = document.createElement("div"); el.appendChild(document.createTextNode("hello ...
- Atcoder Beginner Contest 155D(二分,尺取法,细节模拟)
二分,尺取法,细节模拟,尤其是要注意a[i]被计算到和a[i]成对的a[j]里时 #define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> ...
- Commercial Lighting: LED Ceiling Light, LED Ceiling Light
Unlike ceiling lamps, floor lamps, chandeliers, lamps that can sometimes rely on "faces", ...