linux学习笔记

5. 一般来说,在条件判断中,if then……[else]……if,(else 可以不要),是成

对出现的,也是遵循C 语言中if 的就近原则,即else、fi 都是与其最近相邻

的if 配对的。对于case,也是类似C 语言中的switch 语句,参照switch 理解,

每一个case 一定有一个esac 与之配对。

3.test命令 (1)整数测试运算

test int1 -eq int2: 判断两个数是否相等 test int1 -ne int2: 判断两个数是否不相等 test int1 -gt int2: 判断整数1 是否大于整数2 test int1 -ge int2: 判断整数1 是否大于等于整数2

test int1 -lt int2: 判断整数1 是否小于整数2 test int1 -le int2: 判断整数1 是否小于等于整数2 整数测试也可以使用let 命令或双圆括号 相关操作为:== 、!= 、> 、>= 、< 、<= 如:

x=1; [ $x -eq 1 ]; echo $? x=1; let \x=1; (($x+1>= 2 )); echo $? 两种测试方法的区别: 使用的操作符不同

let 和双圆括号中可以使用算术表达式,而中括号不能 let 和双圆括号中,操作符两边可以不留空格

(2)test -z string: 判断字符串长度是否为0,即判断字符串是否为空,为空返 回真,非空返回假

test -n string: 判断字符串长度是否不为0,即判断字符串是否非空,为空

返回假,非空返回真

test str1 =str2:判断两个字符串是否相等 test str1!=str2:判断两个字符串是否不等 如:

name=Tom; [ -z $name ]; echo $?

name2=Andy; [ $name = $name2 ] ; echo $? (3)文件测试运算

test -r filename: 判断用户对文件filename 是否有读权限 test -w filename: 判断用户对文件filename 是否有写权限 test -x filename: 判断用户对文件filename 是否有可执行权限 test -f filename: 判断文件filename 是否为普通文件 test -d filename: 判断文件filename 是否为目录 test -c filename: 判断文件filename 是否为字符设备 test -b filename: 判断文件filename 是否为块设备 test -s filename: 判断文件filename 是否大小不为0

test -t fnum: 判断与文件描述符fnum(默认值为1)相关的设备是否是 一个终端设备 (4)逻辑运算

test 表达式1 -a 表达式2:与(and)逻辑判断。如果两个表达式同时为真

则返回真,否者返回假。

test 表达式1 -o 表达式2:或(or) 逻辑判断。只要两个表达式有一个为

真则返回真,否则返回假。 如:

x=1; name=Tom;

[ $x -eq 1 –a –n $name ]; echo $? 注:不能随便添加括号 小结:

结构化命令允许改变shell脚本中的普通执行流。最基本的结构化命令是if-then语句。该语句允许评估一条命令,并基于评估命令的结果执行其他命令。

如果指定的命令也失败了,可以扩展if-then语句以包含bash shell执行的一组命令。只有当被估计的命令返回非零退出状态码时,if-then-else语句才允许执行命令。

也可以使用elif语句将if-then-else语句连接起来。Elif与使用else if语句等同,如果被估计的原始命令失败,可以提供额外的检查。

方括号是一个特殊的bash命令,它是test命令的同义词。在if-then语句中的可以使用方括号包围测试条件,来检查数字。字符串。和文件条件。

第十章:更多结构化命令 本章内容:

1.使用for语句循环 2.使用until语句迭代 3.使用while语句 4.结合循环

联系客服:779662525#qq.com(#替换为@)