关于shell:Linux / bin / sh检查字符串是否包含X.

Linux /bin/sh check if string contains X

在shell脚本中,如何确定字符串是否包含在另一个字符串中。在bash中,我只使用=~,但我不知道如何在/bin/sh中做同样的事情。这是可能的吗?


您可以使用case语句:

1
2
3
4
case"$myvar" in
*string*) echo yes ;;
*       ) echo no ;;
esac

你所要做的就是用string代替你需要的任何东西。

例如:

1
2
3
case"HELLOHELLOHELLO" in
*HELLO* ) echo"Greetings!" ;;
esac

或者换一种说法:

1
2
3
4
5
6
string="HELLOHELLOHELLO"
word="HELLO"
case"$string" in
*$word*) echo"Match!" ;;
*      ) echo"No match" ;;
esac

当然,您必须知道,除非您打算全局匹配,否则$word不应该包含magic glob字符。


您可以定义一个函数

1
2
3
4
5
matches() {
    input="$1"
    pattern="$2"
    echo"$input" | grep -q"$pattern"
}

获取正则表达式匹配。注:用法为

1
if matches input pattern; then

(没有[ ])。


你可以试试在"这是测试"中查找"his"

1
2
3
4
5
TEST="This is a test"
if ["$TEST" !="${TEST/his/}" ]
then
echo"$TEST"
fi