实验五 shell脚本编程

实验五 shell脚本编程

项目 内容
这个作业属于哪个课程 Linux系统与应用
这个作业的要求在哪里 作业要求链接
学号-姓名 17041411-陈景思
作业学习目标 (1)了解shell脚本的概念及使用;
(2)掌握shell脚本语言的基本语法;
(3) 学习简单的shell脚本编程

实验内容:

先创建exp5并进入

1,让用户输入一个字符串,如果用户输入的是 hello ,请输入 :hello 用户姓名首字母缩写 ,否则输出 :请输入hello

7 #!/bin/bash
8 read -p '请输入一个字符串:' str
9 if    [ $str ="hello" ]
10 then                                                                        
11         echo "hello chen jing si"         
12     else
13             echo "请输入hello"     
14 fi  

2,编写一脚本,判断输入用户名是否存在,输出结果只能是存在该用户或者不存在该用户,不能有其他数据输出。

7 #!/bin/bash
8 read -p '请输入用户:' user_name
9 id $user_name &> /dev/null
10 if [ $? -eq 0 ]
11 then
12	echo "存在用户$user_name"
13 else
14	echo "不存在用户$user_name"
15 fi

3,编写脚本计算1-100之间的所有奇数和

7 #!/bin/bash
8 SUM=0
9 for i in {1..100..2}
10 do
11
12	let SUM=SUM+$i
13
14 done
15
16 echo "1-100之间的所有奇数和为: $SUM"

4,编写脚本,判断键盘输入整数是否为质数

7 #!/bin/bash
8 read -p '请输入一个正整数:' num
9 [ $num -eq 1 ]  &&  echo  '$num是质数'&&exit 
10 [ $num -eq 2 ]  &&  echo  '$num是质数'&&exit
11 for i in `seq 2 $[$num-1]`
12 do
13 [ $[ $num%i ] -eq 0 ] && echo "$num不是质数"&&exit
14 done
15 echo "$num是质数"&&exit

5,模拟一个多任务维护界面,当执行程序时先显示总菜单,然后进行选择后做相应的维护监控操作。

7 #!/bin/bash
8 cat  <<-EOF
9 h     显示命令帮助
10 f    显示磁盘分区
11 d    显示磁盘挂载
12 m    查看内存使用
13 u    查看系统负载
14 q    退出程序
15 EOF
16 while true
17 do
18	read -p "请选择需要操作的内容(help h):" action
19	case $action in
20	         h)
21		     	cat  <<-EOF
22                     h    显示命令帮助
23                     f    显示磁盘分区
24                     d    显示磁盘挂载
25                     m    查看内存使用
26                     u    查看系统负载
27                     q    退出程序
28				EOF
29				 ;;
30			f)
31				lsblk
32				;;
33			d)
34				df -h
35				;;
36			m)
37				free -m
38				;;
39			u)
40				uptime
41				;;
42			q)
43				exit
44				;;
45		esac
46	done


6,编写脚本实现计算用户输入参数数字的和,分别用 shift 和 for 循环实现。

使用for

7 #!/bin/bash
8 SUM=0
9 for i
10 do
11	let SUM=$SUM+$i
12 done
13 echo SUM=$SUM

使用shift

7 #!/bin/bash
8 SUM=0
9 while [ $# -ne 0 ]
10 do
11	let SUM=$SUM+$1
12	shift
13 done
14 echo SUM=$SUM



7,编写脚本,生成一个phonenumber.txt文件,文件内容为随机产生以139开头的手机号1000个, 每个手机号占一行。

7 #!/bin/bash
8 fire=./phonenumber.txt
9 for((i=1;i<=1000;i++))
10 do 
11	    n1=$[$RANDOM%10]
12	    n2=$[$RANDOM%10]
13	    n3=$[$RANDOM%10]
14		n4=$[$RANDOM%10]
15		n5=$[$RANDOM%10]
16		n6=$[$RANDOM%10]
17		n7=$[$RANDOM%10]
18		n8=$[$RANDOM%10]
19		echo "139$n1$n2$n3$n4$n5$n6$n7$n8" >> $fire
20	done


8,在第7题产生的1000个电话号码中抽取5位幸运号码,并显示,要求只显示前3三位数字和后4位数字,中间四位用*代替

7 #!/bin/bash
8 phone=./phonenumber.txt
9 for((i=1;i<=5;i++))
10 do
11	line=`wc -l $phone | cut -d' ' -f1`
12	luck_line=$[$RANDOM%$line+1]
13	luck_number=`head -$luck_line $phone | tail -1`
14	echo "139****${luck_number:7:4}"
15	echo  $luck_number >> luck.txt
16	sed -i "/$luck_number/d"  $phone
17 done

9,使用 until 语句批量创建10个用户,要求 stu1-stu5 用户的 UID 分别为 2001-2005 , stu6stu10 用户的家目录分别在 /rhome/stu6-/rhome/stu10

7 #!/bin/bash
8 if [ -d /rhome ] 
9 then
10	echo "/rhome目录已经存在"
11 else
12	mkdir /rhome
13	echo "/rhome不存在,已创建成功"
14 fi
15 i=1
16 until [ $i -gt 5 ]
17 do
18     useradd stu$i -u $[2000+$i] && echo 123 | passwd --stdin stu$i
19   let i++
20   done
21   until [ $i -gt 10 ]
22   do
23	useradd stu$i -d /rhome/stu$i && echo  123  |  passwd  --stdin stu$i
24	let i++
25 done


10,编写脚本收集用户输入的基本信息(姓名,性别,年龄),如果用户不输入一直提示用户输入,最后根据用户输入的信息输出相应的内容。

7 #!/bin/bash
8 input_fun(){
9	input_var=""
10	output_var=$1
11	while [ -z $input_var ]
12	do
13		read -p "$output_var" input_var
14	done
15	echo $input_var
16 }
17 name=`input_fun 请输入你的姓名:` 
18 sex=`input_fun 请输入你的性别:`
19 age=`input_fun 请输入你的年龄:`
20
21 echo "你的姓名是$name"
22 echo "你的性别是$sex"
23 echo "你的年龄是$age"

posted on 2020-04-15 16:21  三块多  阅读(230)  评论(0)    收藏  举报