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题相关推荐

  1. shell脚本经典题之函数应用

    shell脚本经典题之函数应用 文章目录 shell脚本经典题之函数应用 1.函数的概述: (1) 函数的定义: (2) 函数的使用: (3) 函数的返回值: (4) 函数的参数: 2.shell函数 ...

  2. 100个Linux Shell脚本经典案例

    kill `ps -ef | grep redis | awk '{print $2}'` grep -w '\|aa\|bb'​​​​​​​ Linux 根据端口号杀进程的.sh脚本_xie_app ...

  3. Shell脚本经典案例:探测批量主机是否存活

    Shell脚本经典案例:探测批量主机是否存活 文章目录 Shell脚本经典案例:探测批量主机是否存活 1.利用数组实现 2.变量方式实现 3.函数实现 一开始我们用ping1次就下定结果说对方主机不通 ...

  4. 批量ping脚本shell_30个Linux Shell脚本经典案例(上)

    在学习Linux运维时,普遍反馈是:Linux Shell是一个很难的知识板块.虽然大家都认真学,基本的语法也都掌握了,但有需求时,很难直接上手编程,要么写了很久,要么写不好! 也有很多做运维很多年的 ...

  5. 在linux上面找一个脚本,30个Linux Shell脚本经典案例

    在学习Linux运维时,普遍反馈是:Linux Shell是一个很难的知识板块.虽然大家都认真学,基本的语法也都掌握了,但有需求时,很难直接上手编程,要么写了很久,要么写不好! 也有很多做运维很多年的 ...

  6. shell 脚本练习 | 「题霸」面试必考真题【shell篇】题解

    写在前面: 每道shell脚本练习题都可以使用while.for.do等循环配合read,printf的方式解题,通过这种编程式的思维解题(类似C语言,通过变量与函数解题).而shell中本身就提供了 ...

  7. 30个Linux Shell脚本经典案例

    在学习Linux运维时,普遍反馈是:Linux Shell是一个很难的知识板块.虽然大家都认真学,基本的语法也都掌握了,但有需求时,很难直接上手编程,要么写了很久,要么写不好! 也有很多做运维很多年的 ...

  8. Linux Shell脚本的10个有用的“面试问题和解答”

    首先致上每日问候.Linux的浩瀚无垠,使人总能每次都提交与众不同的内容.我们"The-Tecmint-Team"的工作是给我们的读者提供一些独特的内容,这些内容不仅对他们的职业生 ...

  9. 100个实用的 Linux Shell 脚本经典案例,收藏备用~

    点击关注公众号,利用碎片时间学习 1)编写hello world脚本 #!/bin/bash # 编写hello world脚本 echo "Hello World!" 2)通过位 ...

最新文章

  1. 安卓开发重磅炸弹!程序员福利!《高级Kotlin强化实战学习手册(附Demo)》开放下载!
  2. OpenStack collectd的从零安装服务端
  3. 013_序列内建函数
  4. Vi经典插件ctags(转)
  5. 60v5g无刷电机矢量控制器_完成一个最小FOC矢量控制系统所需的基本模块和功能配置...
  6. nstimer循环引用_ios开发中经典循环引用场景?
  7. Linux下Jenkins与GitHub自动构建NetCore与部署
  8. 原理解析 | 深入了解 Apache Flink 的网络协议栈
  9. 修改TOMCAT的JVM虚拟机内存大小几种方式
  10. C# 自定义常用代码段
  11. FFmpeg之获取yuv分量(二十二)
  12. mysql 查询polygon_如何通过mysql 判断点是否在指定多边形区域内
  13. PHP PDF转图片:设置图像的色彩空间 RGBCMYK互转
  14. 利用牛顿迭代法求平方根
  15. Ubuntu 20.04.2.0 LTS 下Geany 1.36的“编译文件”和“生成当前文件”两个按键不可用
  16. 指针--指针的创建和指针的大小
  17. QWidget子窗口适应父窗口大小
  18. (转)MAPISendMail调用系统默认的邮件客户端发邮件
  19. 印度人才出口:一半美国科技企业CEO是印度裔 | 数据分析中印青年
  20. Velocity模板语言(VTL):说明

热门文章

  1. 程序员到底要怎么找女朋友?
  2. 系统化了解Micrometer
  3. g77和gfortran区别
  4. IT专业万花筒:三类计算机专业大扫描
  5. 阿里10年分布式技术沉淀:阿里高可用体系核心缔造者、全链路压测创始人告诉你!
  6. eclipse转android studio解决GBK编码转换为UTF-8格式的方法
  7. C# 转账到个人支付宝
  8. 太原理工大学计算机考研怎么样?,太原理工大学考研难吗?一般要什么水平才可以进入?...
  9. cpress Psoc4BLE 处理器及外设介绍
  10. codeforces 702C Cellular Network