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