Shell的字符串比较:使用[]还是[[]]

目录

字符串测试

逻辑运行符

正则表达式


字符串测试

在shell(如Bash或其他类似Unix的shell)中,可以使用单括号 [] 和双括号 [[]] 进行字符串比较,但它们的行为方式有所不同。

单括号用于基本的模式匹配和字符串比较,并且它们在不同的shell之间更具可移植性。使用单括号进行字符串比较的语法如下:

[ string1 operator string2 ]

双括号用于更高级的模式匹配和字符串比较,并且它们是特定于Bash的,在脚本中利用shebang来指定,即脚本中第一行为“#!/bin/bash”。使用双括号进行字符串比较的语法如下:

[[ string1 operator string2 ]]

双括号通常提供更多功能,例如支持正则表达式、模式匹配和其他高级比较运算符。在处理字符串中的空变量和空格方面,它们通常表现得更直观。

例如:

t="abc123a"
[[ $t == abc* ]] #true
[[ $t =~ abc[0-9]+ ]] #true
r="abc[0-9]+"
[[ $t =~ $r ]] #true
r="abc[0-9]+$" #这里的$表示匹配到字符串结束
[[ $t =~ $r ]] #false

以上示例,当t为空时,也能正常执行。但放在单括号中,空值会导致错误,需要使用双引号"$t"。

通常,建议在Bash中使用双括号进行字符串比较,因为它们提供了更大的灵活性和更好的边缘情况处理。然而,如果需要编写更具可移植性的Shell脚本,建议使用单括号。

逻辑运行符

=、==  等于

!=  不等于

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

创意程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值