Linux / bin / sh检查字符串是否包含X.

时间:2014-07-15 08:53:50

标签: linux shell

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

3 个答案:

答案 0 :(得分:11)

您可以使用案例陈述:

case "$myvar" in
*string*) echo yes ;;
*       ) echo no ;;
esac

您只需将string替换为您需要的任何内容。

例如:

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

或者,换句话说:

string="HELLOHELLOHELLO"
word="HELLO"
case "$string" in
*$word*) echo "Match!" ;;
*      ) echo "No match" ;;
esac

当然,您必须知道$word不应包含魔术全局字符,除非您打算进行全局匹配。

答案 1 :(得分:1)

您可以定义一个功能

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

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

if matches input pattern; then

(没有[ ])。

答案 2 :(得分:-2)

你可以试试 在“这是一个测试”中查找“他的”

TEST="This is a test"
if [ "$TEST" != "${TEST/his/}" ]
then
echo "$TEST"
fi