Hailoooooo

实验五 shell脚本编程

项目 内容
这个作业属于哪个课程 班级课程
这个作业的要求在哪里 作业要求
学号-姓名 17041405-王煜
作业学习目标 1.了解shell脚本的概念及使用;2.掌握shell脚本语言的基本语法;3.学习简单的shell脚本编程

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

法一:

#!/bin/bash           #非注释,而是shell脚本的标识
read -p '请输入一个字符串:' str   #输出单引号内提示信息,read命令接收键盘输入,str为变量名

法二:

[ $str= "hello" ] && echo "hello wy" || echo '请输入hello'  #条件判断,若条件成立则执行echo "hello wy",否则执行echo '请输入hello'

法三:

if [ $1 = "hello" ]   #位置参数变量$1表示终端所执行的命令后跟的第一个参数

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

法一:

id $user_name &> /dev/null  #查看用户的UID,GID和组,同时输出重定向不显示在屏幕上
if [ $? -eq 0 ]    #若上一条命令正确执行则$?返回0,否则$?返回1,再与0进行数值比较

法二:

cut -d ":" -f 1 /etc/passwd | grep $user_name &> /dev/null  #以:为分隔符截取/etc/passwd文件的第一列,即所有用户的用户名称,再输出重定向不显示在屏幕

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

for i in {1..100..2}     #i从1开始,每次加2,直至i大于100停止循环

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

[ $num -eq 1 ] && echo '$num是质数' && exit   #1为质数
for i in `seq 2 $[$num-1]`          #seq命令生成从2至(num-1)之间的整数

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

cat <<- EOF  
...
EOF    #能实现多行文本输出





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

while [ $# -ne 0 ]   #位置参数变量$#返回所执行命令后的参数的个数,不为零则一直循环执行脚本中的循环体
shift    #位置参数左移一位,原本命令后的第二个参数变成了第一个



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

file=./phonenumber.txt    #建立文本文件
n1=$[ $RANDOM%10 ]    #用RANDOM函数随机产生0-9之间的数

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

line=`wc -l $phone | cut -d ' ' -f1`       #统计文件的行数
luck_line=$[ $RANDOM%$line+1]              #产生一个随机的行为幸运行,范围在1-$line
luck_number=`head -$luck_line $phone | tail -1`     #获取幸运行所在的随机号码为幸运号码
echo "139****${luck_number:7:4}"                    #输出号码的后四位为所选的幸运号码的后四位,前七位为139****,从而实现幸运号码中间四位数的屏蔽
sed -i "/$luck_number/d" $phone        #sed命令直接修改读取的文件内容,/$luck_number/寻找包含幸运号码的行,d表示删除行,实现在文件中删除幸运号码所在行

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

if [ -d /rhome ]     #判断文件是否存在,是否为目录文件,若文件存在目为录文件则返回真
until [ $i -gt 5 ]     #i大于5跳出循环
useradd -u $[2000+$i] stu$i && echo "stu$i:123" | chpasswd    #添加用户并且指定用户的UID,再用chpasswd命令对用户设置密码
useradd -d /rhome/stu$i stu$i && echo "stu$i:123" | chpasswd   #添加用户并且指定用户的家目录,再用chpasswd命令对用户设置密码
cut -d ":" -f 1,3,6 /etc/passwd | tail -10         #以:为分隔符截取/etc/passwd文件的第1,3,6字段,再显示该文件的最后10行(新添加的用户在文件末尾)
创建用户要在 root 用户权限下执行脚本,故用sudo su切换用户。


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

input_var=" "             #定义变量input_var为空
output_var=$1             #定义变量output_var为第1个参数值
while [ -z $input_var ]   #判断字符串是否为空,为空返回真  
name=`input_fun 请输入你的姓名:` #系统会先执行``里的内容再进行变量的赋值

posted on 2020-04-17 18:26  Hailoooooo  阅读(441)  评论(0编辑  收藏  举报

导航