2017-01-30 99 views
1

打破我在bash腳本漂亮abismal,我試圖來檢測字符串的索引在字符串中並返回-1最長匹配的檢測子說沒有找到擊:用方括號

我用下面的代碼來檢測在給定的uaeName串「光盤1」的索引:當「磁盤1」中不存在uaeName和uaeName包含括號出現

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

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

問題。

時說串$ 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

你能提供一個最小的,可覈查的輸入和預期的輸出?您的輸入字符串根本沒有「磁盤1」。 – Inian

回答

1

報價strindex函數內部的變量:

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

謝謝,這是做到了。我真的有點慚愧,沒有看到他們的! :d – Voljega

0

這應該是[[ "$x" = "$1" ]]

+0

謝謝你這樣做了。 – Voljega