实验五 shell脚本编程
时间:2020-04-17
本文章向大家介绍实验五 shell脚本编程,主要包括实验五 shell脚本编程使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
项目 | 内容 |
---|---|
这个作业属于哪个课程 | 属于课程 |
这个作业的要求在哪里 | 要求链接 |
学号-姓名 | 17043126-杨群鑫 |
作业学习目标 | 1.了解shell脚本的概念及使用 2.掌握shell脚本语言的基本语法 3.学习简单的shell脚本编程 |
查看本机的shell环境及设置shell为bash**
首先建立文件夹exp5,操作基于exp5操作,结果如下:
1.让用户输入一个字符串,如果输入的是hello,则输出:\hello ld\,否则输出:\请输入hello\
#!/bin/bash
read -p '请输入一个字符串:' str #定义一个用户自己输入的变量str
if [ $str = "hello" ] #判断输入的字符等不等于hello
then
echo "hello lyj" #若相等,则打印hello lq
else
echo "请输入hello" #弱不等则打印:请输入hello
fi
2.编写一脚本,判断输入用户名是否存在,输出结果只能是存在该用户或者不存在该用户,不能有其他数据输出。
#!/bin/bash
read -p '请输入用户名:' user_name #定义一个输入变量
id $user_name &> /dev/null #检查用户是否存在
if [ $? -eq 0 ]
then
echo "存在用户$user_name" #存在则输出用户名
else
echo "不存在用户$user_name" #不存在输出:不存在用户+用户名
fi
3.编写脚本计算1-100之间的所有奇数和
#!/bin/bash
sum=0 #定义一个变量用来存数
for i in {1..100..2} #for循环i从1开始,步长为2,到100结束
do
let sum=$sum+$i #求和
done
echo "1-100之间的所有奇数和为:$sum" #打印出奇数和
4.编写脚本,判断键盘输入整数是否为质数。
#!/bin/bash
read -p '请输入一个正整数:' num
[ $num -eq 1 ] && echo '$num是既不是质数也不是合数' && exit
[ $num -eq 2 ] && echo '$num是质数' && exit
#先排除1和2
for i in 'seq 2 $[$num-1]' #定义i从2到num-1
do
[ $[$num%i] -eq 0] && echo "$num不是质数" &&exit
#如果num对i求余约等于0的话打印该数不是质数
done
echo "$num是质数" && exit #否则打印该数是质数
5.模拟一个多任务维护界面,当执行程序先显示菜单,然后进行选择后做相应的维护监控操作。
#!/bin/bash
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 循环实现。
1)shift实现循环
#!/bin/bash #shift实现循环
sum=0
while [ $# -ne 0 ] #判断后面的数字个数为不为o
do
let sum=$sum+$1 #求和
shift #参数左移
done
echo sum=$sum
2)for 实现循环
#!/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
for((i=1;i<=1000;i++)) #循环1000次
do
n1=$[ $RANDOM%10] #产生8位随机数
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.在第七题产生的1000个电话号码中抽取5位幸运号码,并显示,要求只显示前3位数字和后4位数字,中间四位用*代替
#!/bin/bash
phone=./phonenumber.txt
for((i=1;i<=5;i++)) #循环5次
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}" #打印电话号
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 directory exists"
else
mkdir /rhome
echo "/rhome directory does not exists,but has created"
fi
i=1
until [ $i -gt 5]
do
useradd stu$i -u $[2000+$i] && echo 123 | passwd --stdin stu$i
let i++
done
until [ $i -gt 10]
do
useradd stu$i -d /rhome/stu$i && echo 123 | passwd --stdin stu$i
let i++
done
10.编写脚本收集用户输入的基本信息(姓名,性别,年龄),如果用户不输入一直提示用户输入, 后根据用户输入的信息输出相应的内容。
input_fun(){
input_var=""
ounput_var=$1
while [ -z $input_var ]
do
read -p "$output_var" input_var
done
echo $input_var
}
name=`input_fun please input your name:`
sex=`input_fun please input your sex:`
age=`input_fun please input your age:`
echo "your name is $name"
echo "your sex is $sex"
echo "your age is $age"
原文地址:https://www.cnblogs.com/442357808yqx/p/12720118.html
- 【java网络】IO编程
- 一周 Github Trending 热门项目,最全中华古诗词数据库 | Github 项目推荐
- 【线程池】线程池与工作队列
- 一个快速方便的图形化 Python 调试器 —— birdseye | Github 项目推荐
- 关于分区表的在线重定义(r5笔记第98天)
- 10个实用的但偏执的Java编程技术
- 看似诡异的tablespace online问题(r5笔记第95天)
- python2.7进行爬虫POI代码(划分小网格算法)
- 从 Encoder 到 Decoder 实现 Seq2Seq 模型
- python2.7进行爬虫百度POI代码(划分小网格算法)
- 如何通过TTL调试光猫
- 基于树莓派和Tensowflow的物体识别-brain
- SNA中:中心度及中心势诠释(不完整代码)
- 教程 | 基于计算机视觉使用Python和OpenCV计算道路交通
- 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 数组属性和方法
- 私人订制属于自己的Linux系统
- 04 . Docker安全与Docker底层实现
- 03 . Docker数据资源管理与网络
- 02 . DockerFile构建镜像和Docker仓库
- Mysql通过MHA实现高可用
- ProxySQL简介原理及读写分离应用
- 01 . 部署Node.js项目
- 03 . Tomcat的常用设置及优化,升级
- 02 . Tomcat集群会话共享
- 01 . Openfalcon小米监控简介及部署
- 01 . Keepalived原理使用和配置
- 13 . Python3之并发编程
- 14 . Python3之MysSQL
- 01 . Squid原理配置和使用
- 01 . 前端之HTML