实验五 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) 编辑 收藏 举报