test="test"
if [[ $test == "test" ]]; then
echo "Son iguales las cadenas."
elif [[ ! $test ]]; then
echo "La cadena está vacía entonces."
elif [[ $test =~ "^t" ]]; then
echo "El regex indica que la cadena ${test} empieza con t"
elif [[ ${test:1:1} == "e" ]]; then
echo "Aquí estamos comparando el caracter 1 con la letra e, es verdadero"
fi
您可以这样做
help test
以获取更多信息:空字符串:
相等的字符串
不同的链条
在 Bash 中,您可以使用以下语法比较字符串:
请注意,您
$variable
不需要在此处使用双引号。在这里,还有Bash 自己的特性(我们称之为
[[
Bashisms )。标准(即 POSIX 定义的)是使用and :==
[
=
在这种情况下,变量必须用引号引起来,以防止我们分词。
请注意,语法格式如下:
也就是说,周围的空间
[
是必要的,因为它[
本身就是一个命令。调用此命令test
,因此您可以使用[
和test
互换,以及通过执行搜索其指令man test
(如 Trauma 在其答案中所示):[
关于在和中使用双引号的附加说明[[
。当我们使用
[
时,如果我们不加双引号,变量会被扩展导致错误:加上引号,
[
展开是正确的:如果我们删除引号,它会给出一个错误:
好吧,它正在扩展到:
给出 5 个参数,
test
而不是接受的最大 3 个参数。另一方面,使用 Bashism
[[
您可以省略引号:例子:
每个都表示它的作用,很容易理解。