(十四)、shell脚本之shell基础(上)
一、shell脚本介绍
1、使用脚本的原因
其中使用脚本的一个最主要的原因是因为一个字“懒”,在处理自动循环或者大的任务方面可以偷懒且省时间,如果有处理一个任务的命令清单,一个任务可能是将文件分类、向文件插入文本、迁移文件、从文件中删除行、清除系统过期文件、以及系统一般的管理维护工作等等。创建一个脚本,在使用一系列系统命令的同时,可以使用变量、条件、算术和循环快速创建脚本以完成相应工作。这比在命令行下一个个敲入要节省大量的工作时间。s h e l l脚本可以在行命令中接收信息,并使用它作为另一个命令的输入。
2、一个脚本的介绍
$ vim cleanup
#!/bin/sh
#name:cleanup
#this is a general cleanup script
echo "starting cleanup...wait"
rm /usr/local/apps/log/*.log
tail -40 /var/adm/messages > /tmp/messages
rm /var/adm/messages
mv /tmp/messages /var/adm/messages
echo "finished cleanup"
$ chmod u+x cleanup
$ ./cleanup
脚本的第一行总是以#!/bin/sh开始,通知shell使用系统上的Bourne shell解释器,
第二,三行为注释行,介绍脚本内容,非必须;
第四----九行为要运行的而脚本内容
chmod u+x cleanup给用户执行脚本的权限
./cleanup是运行脚本,之所以不能使用cleanup,是应为当前目录不在PATH下
二、条件测试
条件测试就如同c语言中返回0或者1的条件表达式,在shell脚本中格式有所不同
1、测试文件状态
| -d | 目录 |
| -f | 正规文件 |
| -L | 符号链接 |
| -r | 可读 |
| -w | 可写 |
| -x | 可执行 |
| -s | 文件长度大于0、非空 |
| -u | 文件有suid位设置 |
文件状态即该文件是个啥玩意
注意:条件的两边都要有空格,[]前后各一个空格
$ [ -w scores.txt ] or test -w scores.txt
$ echo $?
0
2、测试时使用逻辑操作符
-a 逻辑与,可以用all注记
-o 逻辑或,可以用or注记
$ [ -r result.xls -a -w scores.txt ]
$echo $?
0
3、字符串测试
字符串测试是错误捕获很重要的一部分,特别在测试用户输入或者输出尤为重要,字符串测试有如下5种格式
1 test "string"
2 test string_operator "string"
3 test "string" string_operator "string"
4 [ string_operator string ]
5 [ string string_operator string ]
注:其中string_operator可为:
= 两个字符串相等
!= 两个字符串不等
-z 空字符串
-n 非空串
- 判断环境变量是否为空
$ [ -z $EDITOR]
$ echo $?
1
- 判断环境变量是否为vi
$ [ $EDITOR="vi" ]
4、测试数值
测试数值可以使用很多操作符,格式如下:
test "number" numberic_operator "number"
或者
[ "number" numberic_operator "number" ]
numberic_operator可为:
-eq 数值相等 equal
-ne 数值不相等 not equal
-gt 大于 greater than
-lt 小于 less than
-le 小于等于 less equal
-ge 大于等于 greater equal
$ NUMBER=130
$[ "$NUMBER" -eq "130"]
$echo $?
0 $[ "$NUMBER" -gt "130"]
$echo $?
0
5、expr用法,表达式,取整
expr命令的一般格式:expr argument operator argument,
注意:operator两边的空格不能省略;当operator为乘法符号*时,必须使用\*进行屏蔽其特殊含义
- 基本用法
$ expr 10 + 10
20
$ expr 900 + 600
1500
$ expr 30 / 3
10
$ expr 3 /* 3
9
- 增量计数
$ LOOP=0
$ LOOP='expr $LOOP + 1'从expr命令接受输出并将之放入循环变量
- 数值测试
$ expr rr + 1 //测试一个数,试图计算非整数时,返回错误
expr: non-numeric argument
(十四)、shell脚本之shell基础(上)的更多相关文章
- 转载:shell脚本之前的基础知识
转载地址:http://www.92csz.com/study/linux/12.htm 第十二章 学习 shell脚本之前的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果 ...
- 学习 shell脚本之前的基础知识
转载自:http://www.92csz.com/study/linux/12.htm 学习 shell脚本之前的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写sh ...
- shell脚本之编程基础介绍
1.shell脚本简介 1.1 shell是什么? shell是一个命令解释器,它在操作系统的最外层负责直接与用户对话,把用户的输入解释给操作系统:并处理各种各样的操作系统的输入,将结果输出到屏幕返回 ...
- shell脚本学习—Shell执行脚本
Shell作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行这一条,这种方式称为交互式,但还有另一种执行命令的方式称为批处理方式,用户事先写一个Shell脚本,Shell可以一次把这些命 ...
- 第十二章 学习 shell脚本之前的基础知识
http://www.92csz.com/study/linux/12.htm [什么是shell] 简单点理解,就是系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具.实际上,在shell和 ...
- 大数据系列博客之 --- 深入简出 Shell 脚本语言(基础篇)
首先声明,此系列shell系列博客分为四篇发布,分别是: 基础篇:https://www.cnblogs.com/lsy131479/p/9914747.html 提升篇:https://www.cn ...
- 学习shell脚本之前的基础知识
日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写shell脚本,那么你就不算一个合格的管理员.目前很多单位在招聘linux系统管理员时,shell脚本的编写是必考的项目.有的单位 ...
- shell脚本之前的基础知识
日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写shell脚本,那么你就不算一个合格的管理员.目前很多单位在招聘linux系统管理员时,shell脚本的编写是必考的项目.有的单位 ...
- shell脚本之不同系统上ftp交互使用
场景:当公司将有文件要自动将ubuntu系统的文件要上传到windows上面,或者windows上的文件要下载到ubuntu上面,尤其是像什么日志啊,编译结果啊,测试结果啊等等,做个备份或者做分析处理 ...
随机推荐
- 【模板】【P3402】可持久化并查集
(题面来自洛谷) 题目描述 n个集合 m个操作 操作: 1 a b 合并a,b所在集合 2 k 回到第k次操作之后的状态(查询算作操作) 3 a b 询问a,b是否属于同一集合,是则输出1否则输出0 ...
- 【CF600E】Lomsat gelral——树上启发式合并
(题面来自luogu) 题意翻译 一棵树有n个结点,每个结点都是一种颜色,每个颜色有一个编号,求树中每个子树的最多的颜色编号的和. ci <= n <= 1e5 裸题.统计时先扫一遍得到出 ...
- C语言讲义——冒泡排序(bubble sort)
冒泡排序三步走: 循环 交换 回一手 一个数和其它数比较(循环) 每个数都要做这种比较(再一层循环) 准备工作 #include <stdio.h> void sort(int arr[] ...
- C语言讲义——函数
为实现特定目的而编写的一段可被调用的代码 简单地讲:函数就是一组语句,取了个名字 别名:子例程(routine)/方法(Method,一般面向对象的语言使用这个叫法) 函数的组成部分 以主函数为例: ...
- Java基础教程——数组
数组 Java数组:用于存储同一种数据类型的多个数据. Java数组本身是一种数据类型--引用类型. 类(String.Scanner等大写字母开头的类型)也属于引用类型,int.double等基本类 ...
- IDEA集成Docker插件后出现日志乱码的解决办法
修改IDEA的vmoptions文件 找到IDEA安装目录的bin目录,在idea.exe.vmoptions和idea64.exe.vmoptions文件中追加以下内容: -Dfile.encodi ...
- python2.7,python3.6,python3.8多版本windows10安装,pip共存
1.官网下载安装包,建议安装32位,自动兼容X64 x86是32位,x86-64是64位. 可以通过下面3种途径获取python: web-based installer 是需要通过联网完成安装的 e ...
- EntityFramework Core健康检查
前言 .NET Core提供对应方法可进行健康检查,那么在EF Core中是否也提供了相应的方式呢?EF Core 2.2+(包含2.2)版本提供了针对上下文的健康检查,接下来我们直接利用.NET 5 ...
- day6(短信验证接口)
1.注册容联云账号 1.1注册账号 https://www.yuntongxun.com/user/login 1.2登录即可看到开发者账号信息 1.3 添加测试账号 2.使用容联云发送代码测试 ' ...
- MySQL索引(一)索引基础
索引是数据库系统里面最重要的概念之一.一句话简单来说,索引的出现其实是为了提高数据查询的效率,就像书的目录一样. 常见模型 索引的出现是为了提高查询效率,但是实现索引的方式却有很多种,这里就介绍三种常 ...