2017-01-30 4 views
1

私はbashスクリプトではかなりabismalだと私は、文字列内のサブストリングのインデックスを検出して返すようにしようとしています-1によって破ら最長一致の検出と言われている部分文字列がバッシュ:私が使用カッコ

が見つかりません与えられたuaeName文字列に「ディスク1」の指標を検出するために、次のコード:

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

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

問題「ディスク1」がuaeNameに存在しないと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の内側に誤解しているようですどうすれば問題を解決できますか?

は、あなたの答え[[ "$x" = "$1" ]]でなければなりません

+2

はあなたが最小限の、検証可能な入力と期待される出力を提供することができますか?あなたの入力文字列は 'Disk 1 'をまったく持っていません。 – Inian

答えて

1

strindex関数内自分の変数を引用:

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

ありがとう、これはそれでした。私は実際にはthemselveでそれを見ていないために少し恥ずかしいです!! :D – Voljega

0

いただきありがとうございます。

+0

ありがとうございました。 – Voljega