shell脚本经典10题
shell脚本练习题:
文章目录
- shell脚本练习题:
- 1、从1加到100的和:
- 2、shell脚本自动搭建本地yum仓库:
- 3、shell脚本自动化分区,格式化和挂载:
- 4、shell脚本查看系统信息:
- 5、猜拳游戏(剪刀,石头,布)
- 6、判断成绩:
- 7、猜数字游戏:
- 8、打印九九乘法表:(正序和倒序打印)
- 9、shell脚本批量改文件名:
- 10、查看dd 命令复制磁盘要多久:
- 11、shell脚本自动创建多个用户:
1、从1加到100的和:
#!/bin/bash
#求1-100的和:
sum=0
for i in {1..100}
do
sum=$[i+sum]
done
echo "求和结果为:$sum"#下面运行脚本,查看结果。这里有五种方法,第一种方法需要赋予文件执行权力;
[root@localhost data]# chmod +x hh
[root@localhost data]# ll
总用量 16
-rw-r--r-- 1 root root 59 10月 19 09:39 abc.repo
-rwxr-xr-x 1 root root 87 10月 19 09:23 hh
-rw-r--r-- 1 root root 5 10月 19 10:57 passwd.txt
-rw-r--r-- 1 root root 201 10月 19 09:53 yumd
[root@localhost data]# ./hh
求和结果为:5050
#下面4种不需要赋予执行权限,这里的. hh 与 source hh 是一致的
[root@localhost data]# . hh
求和结果为:5050
[root@localhost data]# source hh
求和结果为:5050
[root@localhost data]# bash hh
求和结果为:5050
[root@localhost data]# sh hh
求和结果为:5050#求10以内的奇数和:
sum=0
for i in {1..10..2}
do
sum=$[sum+i]
done
echo "10以内的奇数相加:$sum"
10以内的奇数相加:25#求100以内的数字和:
sum=0
for ((i=0; i<=100; i++))
do
sum=$[sum+i]
done
echo "100以内的数求和:$sum"
100以内的数求和:5050#用while 求和,1-100求和;
i=1
sum=0
while(( $i<=100 ))
do
sum=$[sum+i]
let "i++"
done
echo "1-100求和:$sum"
1-100求和:5050
2、shell脚本自动搭建本地yum仓库:
#!/bin/bash
#shell脚本自动搭建本地yumcd /etc/yum.repos.d
mkdir bak
mv *.repo bak/echo "[abc]
name=abc
baseurl=file:///mnt
enable=1
gpgcheck=0" > abc.repomount /dev/sr0 /mnt
yum clean all
rpm -q dhcp
yum install dhcp -y
3、shell脚本自动化分区,格式化和挂载:
#!/bin/bash
#shell脚本自动化磁盘分区,挂载,格式化:lsblk
fdisk /dev/sdb <<EOF
m
n
p
1
2048
+10G
p
w
EOFlsblk
mkfs.xfs /dev/sdb1
mount /dev/sdb1 /opt/ky15
df -hT
4、shell脚本查看系统信息:
#!/bin/bash
#用shell脚本查看系统信息name=`hostname`
ip=`ifconfig ens33|awk /netmask/'{print $2}'`
os=`cat /etc/redhat-release`
kernel=`uname -r`
cpu=`lscpu|grep 型号名称:|tr -s " "|cut -d" " -f1 --complement`
mem=`free -hm | awk /Mem/'{print $2}'`
space=`lsblk | awk /disk/'{print $4}'|awk -F G '{print $1}'`
#这里是设置输出时的字体颜色
G="\e[1;32m"
B="\e[1;34m"
E="\e[0m"for i in $spacedo let sum=$[$sum+$i]
doneecho -e "$B主机名:$E$G\t$name\t$E"
echo -e "${B}IP地址:$E$G\t$ip\t$E"
echo -e "$B系统版本:$E$G\t$os\t$E"
echo -e "$B内核版本:$E$G\t$kernel\t$E"
echo -e "${B}cpu名称:$E$G\t$cpu\t$E"
echo -e "$B内存总大小$E:$G\t$mem\t$E"
echo -e "$B硬盘总大小$E:$G\t${sum}G\t$E"
5、猜拳游戏(剪刀,石头,布)
#!/bin/bash
#猜拳游戏,玩家出拳,电脑出拳,最后比对决出胜负;echo "游戏规则:
玩家出石头:输入: 1
玩家出剪刀:输入: 2
玩家出布 :输入: 3
"
echo "-----------------猜拳游戏开始---------------"
num=$[RANDOM%3]read -p "请选择 1-3:" i
case $i in
1)
echo "你出的是石头"if [ $num -eq 0 ] thenecho "计算机出石头"echo "平 局"elif [ $num -eq 1 ] thenecho "计算机出剪刀"echo "你赢了"elseecho "计算机出布"echo "计算机赢了"fi;;
2)
echo "你出的是剪刀"if [ $num -eq 0 ] thenecho "计算机出剪刀"echo "平 局"elif [ $num -eq 1 ] thenecho "计算机出布"echo "你赢了"elseecho "计算机石头"echo "计算机赢了"fi;;
3)
echo "你出的是布"if [ $num -eq 0 ]thenecho "计算机出布"echo "平 局"elif [ $num -eq 1 ]thenecho "计算机出石头"echo "你赢了"elseecho "计算机出剪刀"echo "计算机赢了"fi;;
*)echo "请输入正确的数字:(提示:输入1、2、3)"
esac
6、判断成绩:
# !/bin/bash
#根据输入的数值,判断你的等级;read -p "请输入你的成绩(0-100) : " gradeif [ $grade -ge 90 ] && [ $grade -le 100 ]
then
echo "你真是个小天才"
elif [ $grade -ge 80 ] && [ $grade -le 89 ]
then
echo "考的还行,,良好"
elif [ $grade -ge 60 ] && [ $grade -le 79 ]
then
echo "你及格了"
else
echo "准住备罚抄吧,你不及格"
fi
7、猜数字游戏:
#!/bin/bash
#生成一个100以内的随机数,提示用户猜数字;
#根据用户的输入,提示用户猜对了,猜大了,猜小了# RANDOM 为系统自带的系统变量,值为 0‐32767的随机数
# 使用取余算法将随机数变为 1‐100 的随机数num=$[RANDOM%100+1]
#echo "$num"
i=1
count=10while(( $i<=10 ))
doread -p "----计算机生成了一个随机数(你有10次机会猜出这个数)----:" nlet "count--"echo -e "你还有 "$count" 次机会哦!\n"if [ $n -eq $num ]thenecho "恭喜你,猜对啦"exitelif [ $n -gt $num ]thenecho -e "sorry,你猜大了\n"elseecho -e "sorry,你猜小了\n"filet "i++"
done
8、打印九九乘法表:(正序和倒序打印)
#!/bin/bash
#用 for 循环正序,倒序打印九九乘法表:for j in {1..9}
dofor i in `seq $j`doecho -e "$i*$j=$[i*j]\t\c"done
echo
donefor j in {9..1..-1}
dofor i in `seq $j`doecho -e "$i*$j=$[i*j]\t\c"done
echo
doneecho
echo "用 for 的另一种格式循环输出99乘法表:"for(( j=1;j<=9;j++ ))
dofor(( i=1;i<=j;i++ ))doecho -e "$i*$j=$[i*j]\t\c"done
echo
done
9、shell脚本批量改文件名:
#!/bin/bash
#批量改扩展名cd /root/aa
touch {1..10}.txtfor i in *
doname=`echo $i | cut -d "." -f1`mv $i ${name}.bak
done
10、查看dd 命令复制磁盘要多久:
#!/bin/bash#查看dd 复制时所需的时间;date
dd if=/dev/zero of=/root/sh/1.txt bs=10M count=5
date
11、shell脚本自动创建多个用户:
#!/bin/bash
#shell脚本创建多个用户:i=1
while(( $i<=10 ))
do
useradd stu$i
echo "123456" | passwd --stdin stu$i &>/dev/null
let "i++"
done
shell脚本经典10题相关推荐
- shell脚本经典题之函数应用
shell脚本经典题之函数应用 文章目录 shell脚本经典题之函数应用 1.函数的概述: (1) 函数的定义: (2) 函数的使用: (3) 函数的返回值: (4) 函数的参数: 2.shell函数 ...
- 100个Linux Shell脚本经典案例
kill `ps -ef | grep redis | awk '{print $2}'` grep -w '\|aa\|bb' Linux 根据端口号杀进程的.sh脚本_xie_app ...
- Shell脚本经典案例:探测批量主机是否存活
Shell脚本经典案例:探测批量主机是否存活 文章目录 Shell脚本经典案例:探测批量主机是否存活 1.利用数组实现 2.变量方式实现 3.函数实现 一开始我们用ping1次就下定结果说对方主机不通 ...
- 批量ping脚本shell_30个Linux Shell脚本经典案例(上)
在学习Linux运维时,普遍反馈是:Linux Shell是一个很难的知识板块.虽然大家都认真学,基本的语法也都掌握了,但有需求时,很难直接上手编程,要么写了很久,要么写不好! 也有很多做运维很多年的 ...
- 在linux上面找一个脚本,30个Linux Shell脚本经典案例
在学习Linux运维时,普遍反馈是:Linux Shell是一个很难的知识板块.虽然大家都认真学,基本的语法也都掌握了,但有需求时,很难直接上手编程,要么写了很久,要么写不好! 也有很多做运维很多年的 ...
- shell 脚本练习 | 「题霸」面试必考真题【shell篇】题解
写在前面: 每道shell脚本练习题都可以使用while.for.do等循环配合read,printf的方式解题,通过这种编程式的思维解题(类似C语言,通过变量与函数解题).而shell中本身就提供了 ...
- 30个Linux Shell脚本经典案例
在学习Linux运维时,普遍反馈是:Linux Shell是一个很难的知识板块.虽然大家都认真学,基本的语法也都掌握了,但有需求时,很难直接上手编程,要么写了很久,要么写不好! 也有很多做运维很多年的 ...
- Linux Shell脚本的10个有用的“面试问题和解答”
首先致上每日问候.Linux的浩瀚无垠,使人总能每次都提交与众不同的内容.我们"The-Tecmint-Team"的工作是给我们的读者提供一些独特的内容,这些内容不仅对他们的职业生 ...
- 100个实用的 Linux Shell 脚本经典案例,收藏备用~
点击关注公众号,利用碎片时间学习 1)编写hello world脚本 #!/bin/bash # 编写hello world脚本 echo "Hello World!" 2)通过位 ...
最新文章
- 安卓开发重磅炸弹!程序员福利!《高级Kotlin强化实战学习手册(附Demo)》开放下载!
- OpenStack collectd的从零安装服务端
- 013_序列内建函数
- Vi经典插件ctags(转)
- 60v5g无刷电机矢量控制器_完成一个最小FOC矢量控制系统所需的基本模块和功能配置...
- nstimer循环引用_ios开发中经典循环引用场景?
- Linux下Jenkins与GitHub自动构建NetCore与部署
- 原理解析 | 深入了解 Apache Flink 的网络协议栈
- 修改TOMCAT的JVM虚拟机内存大小几种方式
- C# 自定义常用代码段
- FFmpeg之获取yuv分量(二十二)
- mysql 查询polygon_如何通过mysql 判断点是否在指定多边形区域内
- PHP PDF转图片:设置图像的色彩空间 RGBCMYK互转
- 利用牛顿迭代法求平方根
- Ubuntu 20.04.2.0 LTS 下Geany 1.36的“编译文件”和“生成当前文件”两个按键不可用
- 指针--指针的创建和指针的大小
- QWidget子窗口适应父窗口大小
- (转)MAPISendMail调用系统默认的邮件客户端发邮件
- 印度人才出口:一半美国科技企业CEO是印度裔 | 数据分析中印青年
- Velocity模板语言(VTL):说明