串我要完成在bash下面的僞代碼相當於(A和B都投入到我的腳本):shell腳本從第一的indexOf子
String a = "some long string";
String b = "ri";
print (a.substring(a.firstIndexOf(b), a.length()); //prints 'ring'
我怎麼能在外殼做到這一點腳本?
串我要完成在bash下面的僞代碼相當於(A和B都投入到我的腳本):shell腳本從第一的indexOf子
String a = "some long string";
String b = "ri";
print (a.substring(a.firstIndexOf(b), a.length()); //prints 'ring'
我怎麼能在外殼做到這一點腳本?
你可以這樣做:
$ a="some long string"
$ b="ri"
$ echo $a | grep -o "$b.*"
ring
grep
,sed
等可以使用,但它不是純的bash。
expr
是一個不錯的選擇,但index
參數則不然,因爲它匹配字符而不是整個字符串,嘗試用a = "some wrong string"
它匹配的第一個r
。
而是使用expr match
其正則表達式參數:
a="some long string";
b="ri";
echo ${a:$(expr match "$a" ".*${b}") - $(expr length "$b")}
它還與a = "some wrong string"
試試這個:
a="some long string"
b="ri"
echo ${b}${a#*${b}}
嘗試:
$ a="some long string"
$ b="ri"
$ echo ${a/*$b/$b}
ring
$ echo ${a/$b*/$b}
some long stri
聰明。不過,你應該將參數加雙引號給'echo'。 – tripleee 2017-12-31 20:22:57
不是指數的字符串本身,如果找不到則彈出錯誤 – 2017-10-19 13:36:42