一些基础但有趣的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){ //验证成功要做的事 .....} 但是有时候我们需要部分验证,比如修改用户信息时,因为更 ...
- java高精度,大数
package 高精度幂; import java.math.BigDecimal; import java.util.Scanner; public class Main{ public stati ...
- 题解【洛谷P5658】[CSP-S 2019]括号树
题面 一道简单的栈与\(\text{DP}\)的结合. 首先介绍一下序列上的括号匹配问题,也就是此题在序列上的做法: 设 \(dp_i\) 表示以 \(i\) 结尾的合法的括号序列个数, \(ss_i ...
- 小匠第二周期打卡笔记-Task04
一.机器翻译及相关技术 机器翻译(MT):将一段文本从一种语言自动翻译为另一种语言,用神经网络解决这个问题通常称为神经网络翻译(NMT). 主要特征:输出是单词序列而不是单个单词.输出序列的长度可能与 ...
- OERR: ORA-32004 "obsolete or deprecated parameter(s) specified for %s instance"
Oracle 11gR2通过Memory创建动态参数文件后,通过SPFILE启动,提示 ORA-32004: obsolete or deprecated parameter(s) specified ...
- Java连载77-Integer常用方法、Integer、int、String三者相互转化、自动装箱、自动拆箱
一.关于Integer中常用的方法 package com.bjpowernode.java_learning; public class D77_1_ { public static void ...
- mysql(2):索引
索引基础 索引介绍 定义 索引是满足某种特定查找算法的数据结构.这些数据结构会以某种方式指向数据,从而实现高效查找. 优势 提高了查询速度 劣势 降低更新表的速度,因为更新表时,MySQL不仅要保存数 ...
- AcWing 104. 货仓选址
#include <iostream> #include <algorithm> using namespace std; ; int n; int q[N]; int mai ...
- 好文章推荐 数据库mysql
https://blog.csdn.net/guofeng93/article/details/53994112
- 找到所有的txt文件并删除
1.find /oldboy/ -type f -name "*.txt" -delete 2.find /oldboy/ -type f -name "*.txt&qu ...




