实验五 shell脚本编程
时间:2020-04-16
本文章向大家介绍实验五 shell脚本编程 ,主要包括实验五 shell脚本编程 使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
项目 | 内容 |
---|---|
这个作业属于哪个课程 | <班级课程的主页链接 > |
这个作业的要求在哪里 | < 作业要求链接接地址> |
学号-姓名 | <17043224-徐刚> |
作业学习目标 | 1.了解shell 脚本的概念及使用 2.掌握 shell 脚本语言的基本语法 3.学习简单的 shell 脚本编程 |
1.让用户输入一个字符串,如果用户输入的是hello
,请输入hello 用户姓名首字母缩写
,否则输出请输入hello
。
#!/bin/bash
read -p '请输入一个字符串:' str #通过read定义变量str,储存用户输入的字符串
if [ $str = "hello" ] #$str调用str内容,判断是否等于hello
then
echo "hello xg"
else
echo "请输入hello"
fi
2.编写一脚本,判断输入用户名是否存在,输出结果只能是存在该用户或者不存在该用户,不能有其他数据输出。
#!/bin/bash
read -p '请输入用户名:' user_name #通过read定义变量user_name,储存用户输入的用户名
id $user_name &> /dev/null #查询用户名是否存在,将输出结果送入/dev/null
if [ $? -eq 0 ] #判断返回值是否为0
then
echo "存在用户$user_name"
else
echo "不存在用户$user_name"
fi
3.编写脚本计算1-100
之间的所有奇数和。
#!/bin/bash
SUM=0
for i in {1..100..2} #for循环,从1到100,步长为2
do
let SUM=$SUM+$i #调用SUM和i的值相加,并将值赋给SUM
done
echo "1-100之间的所有奇数和为: $SUM"
4.编写脚本,判断键盘输入整数是否为质数。
#!/bin/bash
read -p '请输入一个正整数:' num
[ $num -eq 1 ] && echo '$num是质数'&&exit #判断输入的值是否为1,若是,则输出1是质数
[ $num -eq 2 ] && echo '$num是质数'&&exit
for i in `seq 2 $[$num-1]` #for循环,i从2到num-1
do
[ $[$num%i] -eq 0 ] && echo "$num不是质数"&&exit #若num/i=0,则输出$num不是质数
done
echo "$num是质数"&&exit
5.模拟一个多任务维护界面,当执行程序时先显示总菜单,然后进行选择后做相应的维护监控操作
#!/bin/bash
cat <<-EOF #cat查看,EOF结束
h 显示命令帮助
f 显示磁盘分区
d 显示磁盘挂载
m 查看内存使用
u 查看系统负载
q 退出程序
EOF
while true
do
read -p "请选择需要操作的内容(help h):" action
case $action in
h)
cat <<-EOF
h 显示命令帮助
f 显示磁盘分区
d 显示磁盘挂载
m 查看内存使用
u 查看系统负载
q 退出程序
EOF
;;
f)
lsblk
;;
d)
df -h
;;
m)
free -m
;;
u)
uptime
;;
q)
exit
;;
esac
done
6.编写脚本实现计算用户输入参数数字的和,分别用shift
和for
循环实现。
#!/bin/bash
SUM=0
while [ $# -ne 0 ] #当参数个数不为0时,循环
do
let SUM=$SUM+$1
shift #参数左移一位
done
echo SUM=$SUM
#!/bin/bash
SUM=0
for i
do
let SUM=SUM+$i
done
echo SUM=$SUM
7.编写脚本,生成一个phonenumber.txt
文件,文件内容为随机产生以139开头的手机号1000个,每个手机号占一行。
#!/bin/bash
file=./phonenumber.txt #将文件地址赋予file
for ((i=1;i<=1000;i++))
do
n1=$[ $RANDOM%10] #随机产生0~9,10个数字
n2=$[ $RANDOM%10]
n3=$[ $RANDOM%10]
n4=$[ $RANDOM%10]
n5=$[ $RANDOM%10]
n6=$[ $RANDOM%10]
n7=$[ $RANDOM%10]
n8=$[ $RANDOM%10]
echo "139$n1$n2$n3$n4$n5$n6$n7$n8" >> $file
done
8.在第7题产生的1000
个电话号码中抽取5位幸运号码,并显示,要求只显示前3三位数字和后4位数字,中间四位用*代替。
#!/bin/bash
phone=./phonenumber.txt
for ((i=1;i<=5;i++))
do
line=`wc -l $phone | cut -d' ' -f1` #查看文件内容行数
luck_line=$[RANDOM%$line+1] #产生随机行
luck_number=`head -$luck_line $phone | tail -1` #取出随机号码
echo "139****${luck_number:7:4}" #显示号码,中间4位用*代替
echo $luck_number >> luck.txt
sed -i "/$luck_number/d" $phone #删除原文件中被选中的号码
done
9.使用until
语句批量创建10
个用户,要求stu1-stu5
用户的UID
分别为2001-2005
,stu6-stu10
用户的家目录分别在/rhome/stu6-/rhome/stu10
。
#!/bin/bash
if [ -d /rhome ]
then
echo "/rhome目录已存在"
else
mkdir /rhome
echo "/rhome不存在,已创建成功"
fi
i=1
until [ $i -gt 5 ] #判断i的值是否大于5
do
useradd stu$i -u $[2000+$i] && echo "stu$i:123"|chpasswd #创建用户stu1-stu5,UID为2001-2005
let i++
done
until [ $i -gt 10 ]
do
useradd stu$i -d /rhome/stu$i && echo "stu$i:123"|chpasswd
let i++
done
10.编写脚本收集用户输入的基本信息(姓名,性别,年龄),如果用户不输入一直提示用户输入,最后根据用户输入的信息输出相应的内容。
#!/bin/bash
input_fun(){
input_var="" #定义变量为空
output_var=$1 #$1为函数含参
while [ -z $input_var ] #变量为空时进入循环
do
read -p "$output_var" input_var
done
echo $input_var
}
name=`input_fun 请输入你的姓名:`
sex=`input_fun 请输入你的性别:`
age=`input_fun 请输入你的年龄:`
echo "你的姓名是$name"
echo "你的性别是$sex"
echo "你的年龄是$age"
原文地址:https://www.cnblogs.com/xu-gang2020/p/12715242.html
- 【ehcache】 timeToLiveSeconds 和 timeToLiveSeconds 的区别
- 升级 CentOS7 、Redis 3.2.x 的问题
- AngularJS 中使用Swiper制作滚动图不能滑动
- JAVA服务端配置允许跨域请求
- CentOS mysql配置主从复制
- Quartz依赖数据库表
- Spring Security Oauth2.0 实现短信验证码登录
- 【Spring Cloud】Redis缓存接入监控、运维平台CacheCloud
- 基于Redis实现分布式应用限流
- Jasypt : 整合spring boot加密应用配置文件敏感信息
- Eureka:扩展ClientFilter实现服务注册自定义过滤
- 【系统日志】log4j配置学习总结
- 【译】MySQL char、varchar的区别
- 【jfinal修仙系列】修改ShiroPlugin支持jfinal3.0
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Dart环境配置和运行
- 微信小程序之间跳转及传参
- Spring源码学习笔记(2)——Bean的加载
- Css实现聊天框
- 机器学习之KNN原理与代码实现
- Dart常用的数据类型
- Vue版本更新清除浏览器缓存
- maven:Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/maven/cli/MavenC
- maven整合struts: Compilation error org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException
- Dart判断运算符
- 机器学习之朴素贝叶斯算法原理与代码实现
- jquery中ajax的使用(java)
- mybatis框架org.apache.ibatis.exceptions.PersistenceException:
- Spring源码学习笔记(3)——容器的功能扩展
- Dart数组的常规操作