Bash:检测括号中断的最长匹配

时间:2017-01-30 07:29:13

标签: string bash

我在bash脚本中非常粗暴,我试图检测字符串中的子字符串索引,返回-1表示找不到子字符串

我使用以下代码检测给定uaeName字符串中“Disc 1”的索引:

strindex() { 
   x="${1%%$2*}"
   [[ $x = $1 ]] && echo -1 || echo ${#x}
}

index=`strindex "$uaeName" "Disk 1"`
echo "Disk 1 $index"

当uaeName中不存在“磁盘1”且uaeName包含括号时,会出现问题。

当字符串$ uaeName为

时,它运行良好
HydroZone v1.0.0 (1994)(Skull Army)(SW).adf
Disk 1 -1

但是只要$ uaeName包含括号,它就会失败:

HydroZone v1.0.0 (1994)(Skull Army)(SW)[Blitz BASIC].adf
Disk 1 56

不知何故,uaeName中的括号[]似乎被误解了,我该如何纠正这个问题?

感谢您的回答

2 个答案:

答案 0 :(得分:1)

引用strindex函数中的变量:

   [[ "$x" = "$1" ]] && echo -1 || echo "${#x}"

答案 1 :(得分:0)

那应该是[[ "$x" = "$1" ]]