1、退出状态
在Linux系统中,每当命令执行完成后,系统都会返回一个退出状态。该退出状态用一整数值表示,用于判断命令运行正确与否。
若退出状态值为0,表示命令运行成功
若退出状态值不为0时,则表示命令运行失败
最后一次执行的命令的退出状态值被保存在内置变量“$?”中,所以可以通过echo语句进行测试命令是否运行成功
2、测试
测试命令可用于测试表达式的条件的真假。如果测试的条件为真,则返回一个 0值;如果测试的条件为假,将返回一个非 0整数值。
测试命令有两种结构:
一种命令是使用test命令进行测试,该命令的格式为:
test expression
其中条件expression是一个表达式,该表达式可由数字、字符串、文本和文件属性的比较,同时可加入各种算术、字符串、文本等运算符。
另一种命令格式:
[ expression ]
其中“[ ”是启动测试的命令,但要求在expression后要有一个“ ]”与其配对。使用该命令时要特别注意“[”后和“]”前的空格是必不可少的。
3、整数运算符
整数比较运算符是算术运算中很简单的一种,用于两个值的比较,测试其比较结果是否符合给定的条件。
例如:
a –eq b
如果满足a等于b,则测试的结果为真(测试条件用0表示)
如果a不等于b,则测试结果为假(测试条件用非0表示)
测试时有两种格式:
(1) test "num1" numeric_operator "num2“
(2) [ "num1" numeric _operator "num2" ]
4、文件操作符
Linux Shell提供了大量的文件操作符,这样可以完成测试文件的各种操作。比较常用的文件操作符如下表所示:
5、逻辑运算符
逻辑运算符主要包括逻辑非、逻辑与、逻辑或运算符,具体描述如下表所示:
6、简单if结构
简单的if结构是:
if expression
then
command
command
…
fi
在使用这种简单if结构时,要特别注意测试条件后如果没有“;”,则then语句要换行,否则会产生不必要的错误。如果if和then可以处于同一行,则必须用“;”
7、if/else结构
命令是双向选择语句,当用户执行脚本时如果不满足if后的表达式也会执行else后的命令,所以有很好的交互性。其结构为:
if expression1
then
command
…
command
else
command
…
command
fi
例:为成绩分类脚本
8、if/elif/else结构
if/elif/else结构针对某一事件的多种情况进行处理。通常表现为“如果满足某种条件,则进行某种处理,否则接着判断另一个条件,直到找到满足的条件,然后执行相应的处理”。其语法格式为:
if expression1
then
command
command
…
elif expression2
then
command
command
…
elif expressionN
then
command
…
command
else
command
…
command
fi
例:这样看整齐多了,少了很多的fi
9、case结构
和if/elif/else结构一样,case结构同样可用于多分支选择语句,常用来根据表达式的值选择要执行的语句,该命令的一般格式为:
case Variable in
value1)
command;;
…
command;;
value2)
command
…
command;;
…
valueN)
command;;
…
command;;
*)
command
…
command;;
esac
例:当我们输入A-E时,输出相应的数字段
10、算术运算符
在Linux Shell中,算术运算符包括:+(加运算)、-(减运算)、*(乘运算)、/(除运算)、%(取余运算)、**(幂运算),这些算术运算符的举例及其结果如下表所示:
11、自增自减运算符
自增自减操作符主要包括前置自增(++variable)、前置自减(--variable)、后置自增(variable++)和后置自减(variable--)。
前置操作首先改变变量的值(++用于给变量加1,--用于给变量减1),然后在将改变的变量值交给表达式使用
后置变量则是在表达式使用后再改变变量的值
要特别注意自增自减操作符的操作元只能是变量,不能是常数或表达式,且该变量值必须为整数型,例如:++1、(num+2)++都是不合法的
例: