实验五 shell脚本编程
| 项目 | 内容 |
|---|---|
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/nchu/2020SpringSystemAndApplication |
| 这个作业的要求在哪里 | https://edu.cnblogs.com/campus/nchu/2020SpringSystemAndApplication/homework/10617 |
| 学号-姓名 | 17043124 肖明 |
| 作业学习目标 | 1.了解shell脚本的概念及使用。 2.掌握shell脚本语言的基本语法 。3.学习简单的shell脚本编程 |
实验内容
首先查看本机的shell环境及设置shell为bash,ubuntu默认是dash,我们需要修改为bash。
sudo dpkg-reconfigure dash

在用户主目录下新建一个文件夹exp5并进入,新建文件text.sh(sh代表shell)。

-
让用户输入一个字符串,如果用户输入的是
hello,请输入hello 用户姓名首字母缩写,否则输出请输入hello。#!/bin/bash
read -p '请输入一个字符串:' str #读取输入字符串
if [ $str = "hello" ] #如果输入hello
then
echo "hello xm" #那么输出hello
else
echo "请输入hello" #否则输出请输入hello
fi
![]()
-
编写一脚本,判断输入用户名是否存在,输出结果只能是存在该用户或者不存在该用户,不能有其他数据输出。
#!/bin/bash
read -p '请输入用户名:' user_name #读取输入用户名
id $user_name &> /dev/null #查询用户是否存在并讲结果送到/dev/null
if [ $? -eq 0 ]
then echo "存在用户$user_name" #如果存在,输出存在用户
else echo "不存在用户$user_name" #否则输出不存在用户
fi
![]()
-
编写脚本计算
1-100之间的所有奇数和。#!/bin/bash
SUM=0
for i in {1..100..2} #i从1到100,每次加2
do
let SUM=$SUM+$i #和存入sum
done
echo "1-100之间的所有奇数和为: $SUM" #输出
![]()
-
编写脚本,判断键盘输入整数是否为质数。
#!/bin/bash
read -p '请输入一个正整数:' num #请输入一个正整数num
[ $num -eq 1 ] && echo '$num是质数'&&exit #num=1,输出num为质数,并退出
[ $num -eq 2 ] && echo '$num是质数'&&exit #num=2,输出num为质数,并退出
for i in
seq 2 $[$num-1]#i取2~(num-1)do
[ $[$num%i] -eq 0 ] && echo "$num不是质数"&&exit #num%i如果不为0,则num不为质数并退出
done
echo "$num是质数"&&exit #否则num为质数并退出
![]()
-
模拟一个多任务维护界面,当执行程序时先显示总菜单,然后进行选择后做相应的维护监控操作
![]()
-
编写脚本实现计算用户输入参数数字的和,分别用
shift和for循环实现。#!/bin/bash
SUM=0 #sum求和
while [ $# -ne 0 ] #循环
do
let SUM=$SUM+$1 #累加
shift #左移一位
done
echo SUM=$SUM #输出
![]()
#!/bin/bash
SUM=0 #sum求和
for i #循环
do
let SUM=SUM+$i #累加
done
echo SUM=$SUM #输出
![]()
-
编写脚本,生成一个
phonenumber.txt文件,文件内容为随机产生以139开头的手机号1000个,每个手机号占一行。#!/bin/bash
file=./phonenumber.txt #文件地址赋予file
for ((i=1;i<=1000;i++)) #1000个号码
do
n1=$[ $RANDOM%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 #1000个号码存于file
done
-
在第7题产生的
1000个电话号码中抽取5位幸运号码,并显示,要求只显示前3三位数字和后4位数字,中间四位用*代替。#!/bin/bash
phone=./phonenumber.txt #文件地址赋予file
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}" #隐藏号码第四到第七位数字
echo $luck_number >> luck.txt #将幸运号码存入文件luck.text
sed -i "/$luck_number/d" $phone #删除原幸运号码
done
![]()
-
使用
until语句批量创建10个用户,要求stu1-stu5用户的UID分别为2001-2005,stu6-stu10用户的家目录分别在/rhome/stu6-/rhome/stu10。![]()
注意这里创建用户要在 root 用户权限下执行脚本,我们可以用 su ( CentOS )或者 sudo su ( Ubuntu ),注意不要加 - ,我们还是在当前目录操作。
![]()
-
编写脚本收集用户输入的基本信息(姓名,性别,年龄),如果用户不输入一直提示用户输入,最后根据用户输入的信息输出相应的内容。
![]()











浙公网安备 33010602011771号