String 来自子字符串第一个索引的Shell脚本子字符串

String 来自子字符串第一个索引的Shell脚本子字符串,string,bash,shell,unix,scripting,String,Bash,Shell,Unix,Scripting,我想在bash中实现以下伪代码的等效功能(a和b都是脚本的输入): 如何在shell脚本中执行此操作?您可以执行以下操作: $ a="some long string" $ b="ri" $ echo $a | grep -o "$b.*" ring grep,sed等等都可以使用,但它不是纯bash expr是一个很好的选择,但是index参数不是,因为它匹配字符而不是整个字符串,请尝试使用a=“some error string”它匹配第一个r 改为使用expr match及其正则表达式参

我想在bash中实现以下伪代码的等效功能(a和b都是脚本的输入):

如何在shell脚本中执行此操作?

您可以执行以下操作:

$ a="some long string"
$ b="ri"
$ echo $a | grep -o "$b.*"
ring

grep
sed
等等都可以使用,但它不是纯bash

expr
是一个很好的选择,但是
index
参数不是,因为它匹配字符而不是整个字符串,请尝试使用
a=“some error string”
它匹配第一个
r

改为使用
expr match
及其正则表达式参数:

a="some long string";
b="ri";
echo ${a:$(expr match "$a" ".*${b}") - $(expr length "$b")}
它也适用于
a=“某些错误字符串”

尝试以下方法:

a="some long string"
b="ri"

echo  ${b}${a#*${b}}
尝试:


不是索引,而是字符串本身,如果找不到杠杆,则弹出错误。不过,您应该在
echo
中双重引用参数。
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