目录
字符串测试
在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脚本,建议使用单括号。
逻辑运行符
=、== 等于
!= 不等于