我想与 shell 脚本进行简单的子字符串匹配

wbk*_*ang 2 shell

我想知道如何在 shell 脚本中进行纯子字符串匹配。

例如,如果我有

STRING1="http://127.0.0.1/"
STRING2="http://127101011/"
SUBSTRING="127.0.0.1"
Run Code Online (Sandbox Code Playgroud)

我希望 SUBSTRING 匹配 STRING1 但不匹配 STRING2。就像java.lang.String.indexOf(String)。

我想这个问题也可以通过正确转义 SUBSTRING 的内容来解决,但我似乎不知道如何解决。

谢谢你,wb康

Jon*_*ler 5

STRING1="http://127.0.0.1/"
STRING2="http://127101011/"
SUBSTRING="127.0.0.1"
for string in "$STRING1" "$STRING2"
do
    case "$string" in
    (*$SUBSTRING*) echo "$string matches";;
    (*)            echo "$string does not match";;
    esac
done
Run Code Online (Sandbox Code Playgroud)

Korn shell 和 Bash 中的' (*)' 符号;case它在原始的 Bourne shell 中不起作用 - 不需要前导 ' ('。

或者,expr可以使用该命令 - 这是另一个经典(和 POSIX)命令,可能因更现代 shell 中的某些功能而过时。