Finding a part of a string in another string variable in bash

I have an issue in finding a part of string variable in another string variable, I tried many methods but none worked out..

for example:

echo -e "   > Required_keyword: $required_keyword"
send_func GUI WhereAmI
echo -e "   > FUNCVALUE: $FUNCVALUE"

flag=`echo $FUNCVALUE|awk '{print match($0,"$required_keyword")}'`;

if [ $flag -gt 0 ];then

    echo "Success";
else
    echo "fail";

fi

But it always gives fail though there are certain words in variable which matches like

0_Menu/BAA_Record ($required_keyword output string)

Trying to connect to 169.254.98.226 ... OK! Executing sendFunc GUI WhereAmI Sent Function WhereAmI [OK PageName: "_0_Menu__47__BAA_Record" ($FUNCVALUE output string)

As we can see here the BAA_Record is common in both of the output still, it always give FAIL

The output echo is

   > Required_keyword: 0_Menu/BAA_Record
   > FUNCVALUE: 
Trying to connect to 169.254.98.226 ... OK!


Executing sendFunc GUI WhereAmI 
Sent Function WhereAmI [OK]
PageName: "_0_Menu__47__BAA_Record"

Upvotes: 0

Views: 48

Answers (2)

John Kugelman
John Kugelman

Reputation: 361565

Bash can do wildcard and regex matches inside double square brackets.

if [[ foobar == *oba* ]]    # wildcard

if [[ foobar =~ fo*b.r ]]   # regex

In your example:

if [[ $FUNCVALUE = *$required_keyword* ]]

if [[ $FUNCVALUE =~ .*$required_keyword.* ]]

Upvotes: 2

tvm
tvm

Reputation: 3449

Not sure if I understand what you want, but if you need to find out if there's part of string "a" present in variable "b" you can use simply just grep.

grep -q "a" <<< "$b"

[[ "$?" -eq 0 ]] && echo "Found" || echo "Not found"

EDIT: To clarify, grep searches for string a in variable b and returns exit status (see man grep, hence the -q switch). After that you can check for exit status and do whatever you want (either with my example or with regular if statement).

Upvotes: 0

Related Questions