项目 内容
这个作业属于那个课程 这里是链接
作业要求在哪里 这里是链接
学号-姓名 17041506-张政
作业学习目标 了解shell脚本的概念及使用;掌握shell脚本语言的基本语法;学习简单的shell脚本编程

前言————环境配置

ubantu默认的dash环境,它的特点是速度更快,但功能相比bash要少很多。而bash是很多Linux平台的内定shell,特点是应用广泛、功能较多。我推荐这篇博客,有bash和dash的区别,读者感兴趣可以去看看:[Linux shell语言——dash和bash](https://www.jianshu.com/p/762d4cccee7e)
如下是dash转bash过程,画个重点。再运行代码`sudo dpkg-reconfigure dash1`后,一定要选择否!!!博主手快(手贱),选了是,自己坑自己。。。

这是简单的输出hello world(哈哈哈哈哈哈,查看test文件时候手又滑了,多敲了一个空格,望读者理解理解)

shell脚本运行有多种方式,不同方式和当前的进程有关。这玩意儿解释起来很复杂(其实是博主太菜),所以推给读者两篇博客。博客一:执行Shell脚本(多种方法) 博客二: Linux中的进程及进程控制

正...正...正...文来了

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

    代码:
read -p '请输入一个字符串:' str
if [ $str = "hello" ]
then
echo "hello wxr"
else
echo "请输入hello"
fi

结果如图:

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

    代码:
read -p '请输入用户名:' user_name
id $user_name &> /dev/null #/dev/null 代表空,即将输入内容给user_name变量。
if [ $? -eq 0 ] #判断是否匹配
then
echo "存在用户$user_name"
else
echo "不存在用户$user_name"
fi

结果如图:

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

    代码:
SUM=0
for i in {1..100..2} #建立循环
do
let SUM=$SUM+$i #sum=sum+i
done
echo "1-100之间的所有奇数和为: $SUM" #类似c中的printf函数

结果如图:

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

    代码:
read -p 'please input a integer:' num
[ $num -eq 1 ] && echo '$num is not a prime number'&&exit #如果num=1,输出1不是质数(加粗)
[ $num -eq 2 ] && echo '$num is a prime number'&&exit #如果num=2,输出1是质数
for i in `seq 2 $[$num-1]`
do
[ $[$num%i] - eq 0] && echo "$num is not a prime number"&&exit #对num进行求余运算,判断是否质数
done
echo "%num is a prime number"&&exit

结果如图:

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

    代码:
cat <<-EOF
h display command help
f display disk partition
d display disk mount
m check memory usage
u check system load
q exit program
EOF
while true
do
read -p "please choose the operation:" action
case $action in
h)
cat <<-EOF #EOF一般会配合cat能够多行文本输出
h display command help
f display disk partition
d display disk mount
m check memory usage
u check system load
q exit program
EOF
;;
f)
lsblk
;;
d)
df -h
;;
m)
free -m
;;
u)
uptime
;;
q)
exit
;;
esac
done

结果如图:

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

    代码如下:
SUM=0
while [ $# - ne o]
do
let SUM=$SUM+$i
done
echo SUM=$SUM SUM=0
for i
do
let SUM=$SUM+$i
done
echo SUM=$SUM

结果如图:

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

    代码:
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

结果如图:

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

    代码:
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

结果如图:

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

    代码:
if [ -d /rhome]
then
echo "/rhome directory exists"
else
mkdir /rhome
echo "/rhome directory does not exists,but has created"
fi
i=1
until [ $i -gt 5]
do
useradd stu$i -u $[2000+$i] && echo 123 | passwd --stdin stu$i
let i++
done
until [ $i -gt 10]
do
useradd stu$i -d /rhome/stu$i && echo 123 | passwd --stdin stu$i
let i++
done

结果如图:

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

    代码:
input_fun(){
input_var=""
ounput_var=$1
while [ -z $input_var ]
do
read -p "$output_var" input_var
done
echo $input_var
}
name=`input_fun please input your name:`
sex=`input_fun please input your sex:`
age=`input-fun please input your age:` echo "your name is $name"
echo "your sex is $sex"
echo "your age is $age"

结果如图:

shell脚本编程(ubantu)的更多相关文章

  1. Shell脚本编程30分钟入门

    Shell脚本编程30分钟入门 转载地址: Shell脚本编程30分钟入门 什么是Shell脚本 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell_t ...

  2. Linux shell脚本编程(三)

    Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...

  3. Linux shell脚本编程(二)

    Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...

  4. Linux shell脚本编程(一)

    Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...

  5. Linux shell脚本编程基础之练习篇

    shell脚本编程基础之练习篇. 1.编写一个脚本使我们在写一个脚本时自动生成”#!/bin/bash”这一行和注释信息. #!/bin/bash ] then echo "请输入一个参数& ...

  6. 【Linux】Shell脚本编程(一)

    Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...

  7. 学习笔记之Linux Shell脚本教程:30分钟玩转Shell脚本编程

    Linux Shell脚本教程:30分钟玩转Shell脚本编程 http://c.biancheng.net/cpp/shell/

  8. Shell脚本编程总结及速查手册

    Shell是一种编程语言, 它像其它编程语言如: C, Java, Python等一样也有变量/函数/运算符/if语句/循环控制/… 但在开始之前, 我想先理清Shell语言与Shell之间的关系. ...

  9. 关于shell脚本编程的10个最佳实践

    每一个在UNIX/Linux上工作的程序员可能都擅长shell脚本编程.但大家解决问题的方式却不尽相同,这要取决于对专业知识的掌握程度.使 用命令的种类.看待问题的方式等等.对于那些处在shell脚本 ...

随机推荐

  1. Flask 偏函数、g对象、flask-session、数据库连接池、信号、自制命令、flask-admin

    目录 一.偏函数 二.g对象 g对象和session的区别 三.flask-session 四.数据库连接池 pymsql链接数据库 数据库连接池版 utils/sql.py 五.信号 六.命令fla ...

  2. ASP.NET WebApi实现Token验证

    记录笔记,在博客园中有很多实现Token的方法,这是我看过他们学到的,然后找到适合自己的解决方案,自己无聊总结一下学习经验写下的 WebApi后端接口实现Token验证 Token是在客户端频繁向服务 ...

  3. 【2020-03-21】Dubbo本地环境搭建-实现服务注册和消费

    前言 本周主题:加班工作.本周内忙于CRUD不能自拔,基本每天都是九点半下班,下周上线,明天还要加班推进进度.今天是休息日,于是重拾起了dubbo,打算近期深入了解一下其使用和原理.之所以说是重拾,是 ...

  4. Android开发:通过 webview 将网页打包成安卓应用

    商业转载请联系作者获得授权,非商业转载请注明出处. For commercial use, please contact the author for authorization. For non-c ...

  5. mac redis搭建集群

    1.下载redis客户端 2.修改redis.conf文件 port 6379 //端口 daemonize yes cluster-enabled yes //打开集群 cluster-config ...

  6. 【简说Python WEB】数据库

    目录 [简说Python WEB]数据库 数据库表 docker安装MySQL Flask-SQLAlchemy操纵MySQL数据库 初始化 定义模型 定义关系 数据库的CRUD操作 创建表 inse ...

  7. Android项目目录结构模板以及简单说明

    1) src  文件 编写java代码的文件目录,遵循java的命名规范.分包 2) gen  文件      包含了android的资源文件的标识符,是不需要程序员维护,是自动添加的 3) asse ...

  8. 《数据库优化》- MySQL视图

    一.什么是视图 视图,是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改,视图基于的表称为基表.视图是存储在数据字典里的一条select语句. 通俗地讲,视图就 ...

  9. 【多校】2019 Multi-University Training Contest 1官方题解

    Blank 定义dp[i][j][k][t]dp[i][j][k][t]dp[i][j][k][t]代表填完前ttt个位置后,{0,1,2,3}\{0,1,2,3\}{0,1,2,3}这4个数字最后一 ...

  10. 图-搜索-DFS-51. N皇后

    2020-03-15 19:49:59 问题描述: n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 上图为 8 皇后问题的一种解法. 给定一个整数 n ...