实验五 shell脚本编程
项目 |
内容 |
这个作业属于哪个课程 |
<首页 - 2021春季Linux系统与应用 - 南昌航空大学 - 班级博客 - 博客园 (cnblogs.com) > |
这个作业的要求在哪里 |
< 实验五 shell脚本编程 - 作业 - 2021春季Linux系统与应用 - 班级博客 - 博客园 (cnblogs.com)> |
学号-姓名 |
<18041506-郑嘉欣> |
作业学习目标 |
1.了解shell脚本的概念及使用 |
1.让用户输入一个字符串,如果用户输入的是hello,请输入hello 用户姓名首字母缩写,否则输出请输入hello。
2.编写一脚本,判断输入用户名是否存在,输出结果只能是存在该用户或者不存在该用户,不能有其他数据输出。
3.编写脚本计算1-100之间的所有奇数和。
4.编写脚本,判断键盘输入整数是否为质数。
5.模拟一个多任务维护界面,当执行程序时先显示总菜单,然后进行选择后做相应的维护监控操作
6.编写脚本实现计算用户输入参数数字的和,分别用shift和for循环实现。
7.编写脚本,生成一个phonenumber.txt文件,文件内容为随机产生以139开头的手机号
8.在第7题产生的1000个电话号码中抽取5位幸运号码,并显示,要求只显示前3三位数字和后4位数字,中间四位用*代替。
9.使用until语句批量创建10个用户,要求stu1-stu5用户的UID分别为2001-2005,stu6-stu10用户的家目录分别在/rhome/stu6-/rhome/stu10。
10.编写脚本收集用户输入的基本信息(姓名,性别,年龄),如果用户不输入一直提示用户输入,最后根据用户输入的信息输出相应的内容。
项目 |
内容 |
这个作业属于哪个课程 |
<班级课程的主页链接 > |
这个作业的要求在哪里 |
< 作业要求链接接地址> |
学号-姓名 |
<18041506-郑嘉欣> |
作业学习目标 |
1.了解shell脚本的概念及使用 |
1.让用户输入一个字符串,如果用户输入的是hello,请输入hello 用户姓名首字母缩写,否则输出请输入hello。
#!/bin/bash
read -p '请输入一个字符串:' str #通过read定义变量str,储存用户输入的字符串
if[ $str ="hello"] #$str调用str内容,判断是否等于hello
then
echo "hello zjx"
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
whiletrue
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"