实验五 shell脚本编程
实验五 shell脚本编程
项目 | 内容 |
---|---|
这个作业属于哪个课程 | 班级课程主页链接 |
这个作业的要求在哪里 | 作业要求链接接地址 |
学号-姓名 | 17041501-戴一凡 |
作业学习目标 | 1. 了解shell 脚本的概念及使用2.掌握 shell 脚本语言的基本语法3.学习简单的 shell 脚本编程 |
-
让用户输入一个字符串,如果用户输入的是
hello
,请输入hello 用户姓名首字母缩写
,否则输出请输入hello
。#!/bin/bash read -p "please input a string:" str if [ "$str" = "hello" ] then echo "hello dyf" else echo "please input hello" fi
-
编写一脚本,判断输入用户名是否存在,输出结果只能是存在该用户或者不存在该用户,不能有其他数据输出。
#!/bin/bash read -p '请输入用户名:' user_name id $user_name &> /dev/null if [ $? -eq 0 ] then echo "存在用户$user_name" else echo "不存在用户$user_name" fi
user_name #用户名 &> /dev/null #输出 [$? -eq 0] #赋值为整数时用-eq,判断该用户名是否存在
-
编写脚本计算
1-100
之间的所有奇数和。#!/bin/bash SUM=0 for i in {1..100..2} do let SUM=$SUM+$i done echo "1-100之间的所有奇数和为: $SUM"
1..100..2 #1到100的奇数 SUM=0 #定义一个变量来保存奇数的和
-
编写脚本,判断键盘输入整数是否为质数。
#!/bin/bash read -p "请输入一个正整数:" num [ $num -eq 1 ] && echo "$num是质数" &&exit [ $num -eq 2 ] && echo "$num是质数" &&exit for i in `seq 2 $[$num-1]` do [ $[$num%i] -eq 0] && echo "$num不是质数"&&exit done echo "$num是质数"&&exit
for i in `seq 2 $[$num-1]` #i取2~num-1 $[$num%i] -eq 0 #当前数字num除以i,若能除尽,则不为质数
-
模拟一个多任务维护界面,当执行程序时先显示总菜单,然后进行选择后做相应的维护监控操作
#!/bin/bash cat <<-EOF h 显示命令帮助 f 显示磁盘分区 d 显示磁盘挂载 m 查看内存使用 u 查看系统负载 q 推出程序 EOF while true 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
cat <<-EOF...EOF ##一起输出,加上-结尾的EOF不用顶行写
-
编写脚本实现计算用户输入参数数字的和,分别用
shift
和for
循环实现。#!/bin/bash sum=0 while [ $# -ne 0 ] do let sum=$sum+$1 shift done echo sum=$sum
shift ##使本次参数向左移动,默认移动一位,可以使用shift 2移动两位
#!/bin/bash sum=0 for i do let sum=$sum+$i done echo sum=$sum
-
编写脚本,生成一个
phonenumber.txt
文件,文件内容为随机产生以139开头的手机号1000个,每个手机号占一行。#!/bin/bash file=./phonenumber.txt for ((i=1;i<=1000;i++)) 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 done
-
在第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}" echo $luck_number >> luck.txt sed -i "/$luck_number/d" $phone done
-
使用
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 ] do useradd stu$i -u $[2000+$i] && echo "stu$i:123" | chpasswd && echo "stu$i创建成功!" let i++ done until [ $i -gt 10 ] do useradd stu$i -d /rhome/stu$i && echo "stu$i:123" | chpasswd && echo "stu$i创建成功!" let i++ done
-
编写脚本收集用户输入的基本信息(姓名,性别,年龄),如果用户不输入一直提示用户输入,最后根据用户输入的信息输出相应的内容。
#!/bin/bash input_fun(){ input_var="" output_var=$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"