您的位置:首页 > 运维架构 > Shell

[9-13]Shell系列5――条件测试和运算符

2015-09-22 00:01 519 查看
本文旨在复习Shell脚本编程中的条件测试和5种基本运算符

知识储备
Bash支持众多运算符,算数、关系、布尔、字符串、文件测试运算符

而这些运算符中打印结果为0或1的,即结果为布尔型的运算都可以作为条件测试Expression

原生Bash不支持简单的数学运算,只能通过别的方式得到 参考Shell系列6―取算数运算数值

什么是条件测试?
● 条件测试,即对于给定的某种条件或某几种条件判断真假,并给出返回值
● 若测试条件为真,则返回一个0值;如果测试条件为假,将返回一个非0整数值。
● 依据返回值,shell脚本可有选择地执行某些片段,最常见的是If的条件表达式、while的循环条件等



● 测试命令可文件测试、整数测试、字符串测试等,本质是对不同运算符运算结果真假判断,即Expression
● 测试命令1.2.3基本效果相同,但是[[ ]]是关键字,其他是built内建命令
命令 和 关键字的差别有多大呢?
如果是命令,它把参数作为比较表达式或文件测试,并且根据比较结果,返回一个退出码。那样比如 ">" "<" 就被 shell 解释为重定向符号了。关键字却不这样。关键字把整个表达式看作一个单独的元素,并且返回一个退出码。[[]]结构比[]更灵活,是一个扩展的test命令。

算数运算符
注意点: <1>注意:Bash原生不支持算术运算的,需要使用别的办法来获取算数运算值 参考shell系列6 <2>输出结果可以是数值,也可以是0/1这样的布尔型,因此也可以作为条件测试的 Expression <3>如果是做条件测试,那么需要以这样的形式来写[ Experssion ] 左右两侧有空格!


关系运算符
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
输出结果是布尔型,因此可以作为条件测试的 Expression



布尔运算符
布尔运算符运算结果本来就是布尔型,显然可以作为条件测试的 Expression



字符串运算符
字符串运算符能比较string、是否为空等,结果也是布尔型,也可做条件测试 Expression



补充字符串其实也是可以比较大小,本质是对应ASCII数值大小的比较,用法如下
1
2
3
4
5
6
7
8
9
10

#!/bin/bash
# "A" > "B":是否大于; -->这里直接用的字符串A
# "A" < "B":是否小于; -->还可以使用$Var_Name[变量中存放字符串]
# 字符串比较大小 应该使用[[ Expression ]]

if [[ "A" > "B" ]];then
echo "yes"
else
echo "no"
fi




文件测试运算符
文件测试运算符用于检测 Unix 文件的各种属性。结果为布尔型,也可做条件测试 Expression



本文出自 “蓝色仓库” 博客,请务必保留此出处http://bluebox.blog.51cto.com/8852456/1696936
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: