shell脚本编程(ubantu)
项目 | 内容 |
---|---|
这个作业属于那个课程 | 这里是链接 |
作业要求在哪里 | 这里是链接 |
学号-姓名 | 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中的进程及进程控制
正...正...正...文来了
- 让用户输入一个字符串,如果用户输入的是hello,请输入hello 用户姓名首字母缩写,否则输出请输入hello。
代码:
read -p '请输入一个字符串:' str
if [ $str = "hello" ]
then
echo "hello wxr"
else
echo "请输入hello"
fi
结果如图:
- 编写一脚本,判断输入用户名是否存在,输出结果只能是存在该用户或者不存在该用户,不能有其 他数据输出。
代码:
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-100之间的所有奇数和
代码:
SUM=0
for i in {1..100..2} #建立循环
do
let SUM=$SUM+$i #sum=sum+i
done
echo "1-100之间的所有奇数和为: $SUM" #类似c中的printf函数
结果如图:
- 编写脚本,判断键盘输入整数是否为质数。
代码:
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
结果如图:
- 模拟一个多任务维护界面,当执行程序时先显示总菜单,然后进行选择后做相应的维护监控操作。
代码:
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
结果如图:
- 编写脚本实现计算用户输入参数数字的和,分别用 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
结果如图:
- 编写脚本,生成一个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
结果如图:
- 在第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
结果如图:
- 使用 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
结果如图:
- 编写脚本收集用户输入的基本信息(姓名,性别,年龄),如果用户不输入一直提示用户输入, 后根据用户输入的信息输出相应的内容。
代码:
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)的更多相关文章
- Shell脚本编程30分钟入门
Shell脚本编程30分钟入门 转载地址: Shell脚本编程30分钟入门 什么是Shell脚本 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell_t ...
- Linux shell脚本编程(三)
Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...
- Linux shell脚本编程(二)
Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...
- Linux shell脚本编程(一)
Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...
- Linux shell脚本编程基础之练习篇
shell脚本编程基础之练习篇. 1.编写一个脚本使我们在写一个脚本时自动生成”#!/bin/bash”这一行和注释信息. #!/bin/bash ] then echo "请输入一个参数& ...
- 【Linux】Shell脚本编程(一)
Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...
- 学习笔记之Linux Shell脚本教程:30分钟玩转Shell脚本编程
Linux Shell脚本教程:30分钟玩转Shell脚本编程 http://c.biancheng.net/cpp/shell/
- Shell脚本编程总结及速查手册
Shell是一种编程语言, 它像其它编程语言如: C, Java, Python等一样也有变量/函数/运算符/if语句/循环控制/… 但在开始之前, 我想先理清Shell语言与Shell之间的关系. ...
- 关于shell脚本编程的10个最佳实践
每一个在UNIX/Linux上工作的程序员可能都擅长shell脚本编程.但大家解决问题的方式却不尽相同,这要取决于对专业知识的掌握程度.使 用命令的种类.看待问题的方式等等.对于那些处在shell脚本 ...
随机推荐
- 为什么 String 是 immutable 类
二哥,你能给我说说为什么 String 是 immutable 类(不可变对象)吗?我想研究它,想知道为什么它就不可变了,这种强烈的愿望就像想研究浩瀚的星空一样.但无奈自身功力有限,始终觉得雾里看花终 ...
- C# 基础知识系列- 1 数据类型
常见数据类型 C#的类型一般分为值类型.引用类型两大类型. 值类型的实例存放在栈中,引用类型会在栈中放置一个指针指向堆中的某一块内容. C#为我们内置了几个数据类型供我们使用: 关键词简写 对应的类全 ...
- 如何使用Postman编写Testlink测试用例
Postman2Testlink 通过Postman快速操作testlink测试用例.测试套件.测试计划.添加关键词.添加自定义字段等等. 工具地址 https://github.com/liyinc ...
- Trie 字典树,hdu1251
参考博客:https://www.cnblogs.com/TheRoadToTheGold/p/6290732.html 字典树就是单词树,顺着一条路径到达终止结点就形成一个单词,该单词的前缀包含在这 ...
- C 实战练习题目1
题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. 实例: #in ...
- Docker笔记(十三):容器日志采集实践
日志是服务运行过程中的一个关键环节,借助日志,我们可以排查定位问题,也可以借助集中化的日志管理平台(如ELK)来做一些必要的数据统计分析.在Docker环境中,日志的采集比传统环境更为复杂,因此了解D ...
- 武林高手?敏捷开发,唯velocity取胜
去年学习软件工程教材,初识敏捷开发.目前所在的团队,也是使用敏捷开发方式.今天读了这篇文章,对于这段时间的效率有所警醒.其次,个人认同文章中的用户故事,结对编程思想. 文章援引:http://gitb ...
- Kitty-Cloud环境准备
项目地址 https://github.com/yinjihuan/kitty-cloud 开发工具 开发工具目前对应的都是我本机的一些工具,大家可以根据自己平时的习惯选择对应的工具即可. 工具 说明 ...
- SQL实战(六)
一. 题目描述 查找排除当前最大.最小salary之后的员工的平均工资avg_salary.CREATE TABLE `salaries` ( `emp_no` int(11) NOT NULL,`s ...
- Python语法元素分析
缩进 1个缩进 = 4个空格 用以在Python中标明代码的层次关系 缩进是Python语言中表明程序框架的唯一手段 注释 注释:程序员在代码中加入的说明信息,不被计算机执行 注释的两种方法: 单行注 ...