首页 理论教育 实用LinuxShell编程:双中括号格式

实用LinuxShell编程:双中括号格式

时间:2023-11-18 理论教育 版权反馈
【摘要】:见表5-4的中间三行,两层中括号是对一层中括号的扩展,使用双中括号,遇到大于号、小于号和小括号时,其前面不必再加反斜杠。在5.1.2节说过:对包含空格的字符串进行判断时要带上引号,否则判断结果可能不对。接5.1.2节的例子,给name赋值为空格加Mike,“变量name等于字符串Mike”应该是不成立的。用双中括号判断时,$name的两边不加引号,得到的判断结果也是对的:把str赋为三个空格,“变量str为空字符串”应该是不成立的。

实用LinuxShell编程:双中括号格式

按照字典顺序,字符串abc排在efg的前面,并且,“10小于或等于20”是成立的,所以下面命令的退出状态为0。为了逻辑更清楚,加上了小括号:

978-7-111-48202-4-Chapter05-43.jpg

上面命令包含的反斜杠太多了,不易阅读。有什么改进的办法呢?见表5-4的中间三行,两层中括号是对一层中括号的扩展,使用双中括号,遇到大于号、小于号和小括号时,其前面不必再加反斜杠。使用双中括号时,与运算符是&&,或运算符是||,学过C语言的人会感觉很熟悉。如果用双中括号,上面的例子变为:

978-7-111-48202-4-Chapter05-44.jpg

再将两个表达式各自加上小括号,逻辑会更清晰,不需要使用反斜杠:

978-7-111-48202-4-Chapter05-45.jpg

再看一个例子。按照字典顺序,字符串abc排在xyzw的前面,“字符串abc大于字符串xyzw”不成立,并且,“100大于200”也是不成立的,所以下面命令的退出状态为1:

978-7-111-48202-4-Chapter05-46.jpg

判断用户对文件hello.mk是否同时具有读权限和执行权限:(www.xing528.com)

978-7-111-48202-4-Chapter05-47.jpg

双中括号比起单中括号,还有不一样的地方。在5.1.2节说过:对包含空格的字符串进行判断时要带上引号,否则判断结果可能不对。使用双中括号时,引号就不需要了,下面看两个例子。

接5.1.2节的例子,给name赋值为空格加Mike,“变量name等于字符串Mike”应该是不成立的。用双中括号判断时,$name的两边不加引号,得到的判断结果也是对的:

978-7-111-48202-4-Chapter05-48.jpg

把str赋为三个空格,“变量str为空字符串”应该是不成立的。用双中括号判断时,$str的两边不加引号,得到的判断结果也是对的:

978-7-111-48202-4-Chapter05-49.jpg

使用双中括号判断两个字符串相等或者不相等时,右边的字符串可以使用通配模式。例如,*代表零个或者多个字符,?代表一个字符。所以下面的前两个条件是成立的,退出状态为0;最后一个不成立,退出状态为1:

978-7-111-48202-4-Chapter05-50.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈