一、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

最新文章

  1. 实战-Fluxion与wifi热点伪造、钓鱼、中间人攻击、wifi破解
  2. [译] 企业级 OpenStack 的六大需求(第 3 部分):弹性架构、全球交付
  3. Tyvj P1175 机器人
  4. [MongoDB]count,gourp,distinct
  5. C# 刷新页面浏览次数(点击量)+1
  6. XiaoShi657的留言板
  7. HDU 4587 B - TWO NODES tarjan
  8. shell脚本结构示例1
  9. 【Xamarin挖墙脚系列:Xamarin.IOS的程序的结构】
  10. Tomcat7+Redis存储Session(转)
  11. windows2012R2虚拟机快速激活的方法
  12. jQuery百叶窗图片滑块
  13. ssh The authenticity of host 192.168.0.xxx can't be established
  14. GUI与UI的区别
  15. spring 整合Mybatis 《报错集合,总结更新》
  16. 纯HTML5APP与原生APP的差距在哪?
  17. pyinstaller,scrapy和apscheduler
  18. 《Java大学教程》—第11章 案例研究--第1部分
  19. Nginx 安装与详解
  20. ID基本操作(新建文档,页面编码)5.8

热门文章

  1. 安装kibana7.7.0
  2. 关于String的matches方法
  3. mq消息消费,broker选址
  4. ResHacker 用命令行方式修改 windows PE文件版本号
  5. OD断点操作
  6. 第9.12节 Python中其他文件操作方式
  7. 第14.16节 爬虫实战2:赠人玫瑰,手留余香! request+BeautifulSoup实现csdn博文自动点赞
  8. Python(Python+Qt)学习随笔:使用xlwings新建Execl文件和sheet的方法
  9. tesseract-ocr 图片文字识别
  10. autojs websocket 核心示例代码,云控技术