shell脚本在处理自动循环或大的任务方面可节省大量时间,且功能强大。
任何脚本都可能有注释,加注释需要此行的第一个字符为#,解释器对此行不予解释。
脚本不是复杂的程序,它是按行解释的。脚本第一行总是以#!/bin/sh开始,这段脚本通知shell使用系统上的 Bourne shell解释器。
脚本从上到下执行,运行脚本前需要增加其执行权限。确保正确建立脚本路径,这样只用文件名就可以运行它。
条件测试
写脚本时,有时要判断字符串是否相等,可能还要检查文件状态或是数字测试。
Test命令用于测试字符串,文件状态和数字
expr命令测试和执行数值输出
使用最后退出状态命令$?可测知test和expr,二者均以0表示正确,1表示返回错误
文件状态测试
-d
目录
|
-s
文件长度大于0、非空
|
-f
正规文件
|
-w
可写
|
-L
符号链接
|
-u
文件有suid位设置
|
-r
可读
|
-x
可执行
|
文件测试时使用逻辑操作符
-a 逻辑与
-o 逻辑或
!
逻辑否
字符串测试
=
两个字符串相等
|
!=
两个字符串不等
|
-z
空串
|
-n
非空串
|
测试数值
-eq
数值相等
|
-ne
!=
|
-gt
>
|
-lt
<=
|
-le
<=
|
-ge
>=
|
expr
使用乘号时,必须用反斜线屏蔽其特定含义。
模式匹配
expr也有模式匹配功能。可以使用expr通过指定冒号选项计算字符串中字符数。
“.*”意即任何字符重复0次或多次。
if、the、else语句提供条件测试。测试可以基于各种条件。
case语句允许匹配模式、单词或值。
一旦模式或值匹配
for循环
每次处理依次列表内信息,直至循环耗尽
Until until循环直至条件为真。
while循环
while循环当条件为真时,循环执行,条件部分在循环头
流控制语句的任何循环均可嵌套使用
文件拷贝输出检查
当前目录测试
当运行一些管理脚本时,可能要在根目录下运行它,特别是移动某种全局文件或进行权限改变时。一个简单的测试可以获知是否运行在根目录下。