shell编程的核心内容(2)
来源:互联网 发布:php如何解决高并发抢购 编辑:程序博客网 时间:2024/05/22 17:52
本篇文章紧接上篇SHELL编程核心内容(1),SHELL不仅仅是命令,很多情况,我们可以把它作为一种编程的工具,比如,用SHELL实现一个学生信息的管理系统。
本文的写作目的就是让你在十分钟内学会SHELL编程。SHELL编程的精髓在于条件测试和分支结构。SHELL的分支结构与C语言的分支结构本质上是一样的,只是语法词法有些区别。条件测试,是为分支结构提供条件的。
while [ -r filename ]
do
echo’’in while”
done
猜得到,我们想用while做循环,那么,循环条件是什么呢?循环体又是什么呢?
我先告诉你,条件是[ -r filename ],循环体就是do和done中间的命令echo’’in while”。
While结构的用法就是这样的。这个,真的没有为什么。
我们学习SHELL编程,要掌握的,也是10分钟之内能掌握的,就是,每一种分支结构的格式,加上诸如[ -r filename ]的条件测试的用法。当然,这些条件不只是用在while中,也是用于其它分支结构的。
那么 –r 表示什么呢?
我们看下列表:
• 1)对文件特性的测试
-d file---文件file存在且为目录文件
-f file---文件file存在且为普通文件
-r file---文件file存在且为可读文件
-w file---文件file存在且为可写文件
-x file---文件file存在且为可执行文件
-s file---文件file存在且文件长度为非零
• 2)对字符串内容的测试
s1 = s2---当字符串s1和s2相同时结果为真值
s1 != s2---当字符串s1和s2不相同时结果为真值
-z s1---s1串长度等于0
-n s1---s1串长度不等于0
• 3)用于对整数n的测试
n1 –eq n2 ---当整数n1与n2相等时,返回真值
n1 –ne n2 ---当整数n1与n2不相等时,返回真值
n1 –lt n2 ---当整数n1小于n2时,返回真值
n1 –le n2 ---当整数n1小于等于n2时,返回真值
n1 –gt n2---当整数n1大于n2时,返回真值
n1 –ge n2---当整数n1大于等于n2时,返回真值
现在,我们就可以用任何分支结构配合上述的测试条件了。几种分支结构如下:
一. if [ 条件1 ]
then
命令1
elif [ 条件2 ]
then
命令2
else
命令3
fi
二.
case 值 in
模式1)
命令1
;;
……
*)
命令n
;;
esac
三.
while[condition]
• do
• commands
• ……
• last-command
• done
四.
• until [condition]
• do
• commands
• ……….
• last-command
• done
五.
for 变量名 in 列表
do
命令
done
不再多说这些循环是什么了,学过C的都知道。我们来看一个简单的实例:
#!/bin/sh
#forTest
#to test the method of for
COUNTER=0
for FILES in *
do
COUNTER=`expr $COUNTER + 1`
done
echo "There are $COUNTER files in `pwd` "
这个实例囊括了算术运算的做法。是这样的:
expr是对shell变量进行算术运算的操作.例:
$ count=0
$ count=$count+1
$ echo $count
显示为0+1
$ count=`expr $count+1`
$ echo $count
显示为1
要想做一个算术运算,必须用expr对变量取值,脚本语言里,这种用法是通用的。通常用于硬件测试的TCL脚本就是这样的。
好了,上面的实例都能看懂了。for FILES in *就是当前目录下的文件作为循环条件。COUNTER=`expr $COUNTER + 1`就是统计文件个数。
如果你读懂了这几个例子,就没问题了。相信真的也就是10分钟的时间,除非你在仔细的看上述哪些测试条件和循环格式。我觉得用的时候可以查,不用记。
SHELL编程就真的只是这些,当然还能用函数调用的方式使用SHELL。
- shell编程的核心内容(2)
- shell编程的核心内容
- shell编程的核心内容(1)-来自顶嵌索健老师
- 我对Java+Oracle数据库编程(JDBC)的理解与核心内容分析
- 搜索引擎的核心内容
- ERP的核心内容
- 接口文档的核心内容
- Makefile 的核心内容
- ES6/核心内容(上)
- shell编程(2)
- shell编程(2)
- 年度营销规划的核心内容
- 【ES6】最常用的核心内容
- ES6/ES2015核心内容(下)
- Shell编程摘录(2)
- Shell 编程速成(2)
- shell编程珠玑(2)
- Shell 编程2(变量)
- 周立功写给学单片机的年轻人
- 在.NET中 DAL+IDAL+Model+BLL+Web的含义
- S3C2410读写Nand Flash分析
- 明天就要回家了
- void的认识
- shell编程的核心内容(2)
- 第一篇
- Hibernate基础教程(5)
- const在限制函数修改内部变量的一点作用,以及mutable关键字
- java自学中,编程时间!
- 关于Java equals()方法的几点疑问
- 空悬指针(dangling pointers)
- 回顾
- 我的青春是在江苏呆的:)