linux程序设计——shell程序设计(第二章)

这篇介绍shell的语法,包括shell中的变量,条件判断,控制结构和函数。此外,这篇的所有命令都在变量条件控制结构函数。下一篇是命令和命令的执行。

Shell的语法

条件

所有程序设计语言的基础都是对条件的进行测试判断,并根据不同测试结果采取不同行动。一个shell脚本能够对任何可以从命令行上调用的命令的退出码进行测试,其中也包括自己编写的脚本程序。这也就是要在所有自己编写的脚本程序的结尾包括一条返回值的命令的重要原因
test或[命令
大多数脚本程序都会广泛使用shell的布尔判断命令[或test
例如:[ -f fred.c ] 注意必须在[符号和被检查的条件之间留出空格。如果把then和if放在同一行上,则需要使用一个分号把test语句和then分隔开。
test命令可以使用的条件类型可以分为3类:字符串比较,算术比较和与文件有关的条件测试。
字符串比较                结果
string1 = string2        
string1 != string2
-n string                如果字符串不为空,则结果为真
-z string                 如果字符串为null,则结构为真

算术比较                结果

expres1 -ep expres2        如果两个表达式相等,则结果为真
expres1 -ne expres2        如果两个表达式不等,则结果为真
expres1 -gt expres2        如果expres1大于expres2,则结果为真
expres1 -ge expres2        如果expres1大于等于expres2,则结果为真
expres1 -lt expres2        如果expres1小于
expres1 -le expres2        如果expres1小于等于
! expres                如果expres为假,则结果为真

文件条件测试            结果
-d file                    如果文件是一个目录,则结果为真
-e file                    如果文件存在,则结果为真(通常使用-f)
-f file                    如果文件是一个普通文件,则结果为真
-g file                    如果文件的set-group-id位被设置,则
-r file                    如果文件可读,则
-s file                    如果文件的大小不为0,则
-u file                    如果文件的set-user-id位被设置,则
-w file                    如果文件可写,则
-x file                    如果文件可执行,则

控制结构

shell有一组控制结构,它们与其他程序设计语言中的控制结构类似。
1.if语句
if conditon
then
    statement
else
    statement
fi

2.elif语句

3.判断条件时,注意给变量加上引号,这样一个空变量提供的就是合法测试了。
4.for语句
for variable in values
do
    statement
done
5.while语句
因为在默认情况下,所有的shell变量值都被认为是字符串,所以for循环特别适合对于一系列字符串进行循环处理,但如果事先并不知道循环要执行的次数,那么使用while。
while condition do
    statement
done
6.until语句
until condition
do
    statement
done
7.case语句
case variable in
    pattern [ | pattern] ...) statement;;
    pattern [ | pattern] ...) statement;;
esac

8.命令列表
有时需要将多条命令连接成一个序列。
AND列表
AND列表结构:只有在前面所有的命令都执行成功的情况下才执行后一条命令
statement1 && statement2 && statement3 && ...
从左向右执行每一条命令,&&的作用是检查前一条命令的返回值是否为true。
OR列表
OR列表结构允许我们持续执行一系列命令直到有一条命令成功为止,其后的命令将不再被执行
statement1 || statement2 || statement3 || ...
从左开始执行每条语句,如果一条命令返回的是false,它右边的下一条命令才能被执行。
9.语句块
如果想在某些允许使用单个语句的地方使用多条语句,可以把它们括在花括号{}中来构造一个语句块。

函数
要定义一个shell函数,只需要写出它的名字,然后是一对空括号,再把函数中的语句放在一对花括号中,如下所示:
function_name(){
    statement
}

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。