我在另一个字符串变量中查找字符串变量的一部分时遇到了问题,我尝试了很多方法,但都没有解决..
例如:
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
但是它总是给出失败,尽管变量中有某些词匹配
0_Menu / BAA_Record ($ required_keyword输出字符串)
尝试连接到169.254.98.226 ......好的!执行sendFunc GUI WhereAmI发送函数WhereAmI [OK PageName: " _0_Menu__47 __的 BAA_Record " ($ FUNCVALUE输出字符串)
正如我们在这里看到的那样 BAA_Record 在两个输出中仍然很常见,它总是给出 FAIL
输出回显是
> 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"
答案 0 :(得分:2)
Bash可以在双方括号内进行通配符和正则表达式匹配。
if [[ foobar == *oba* ]] # wildcard
if [[ foobar =~ fo*b.r ]] # regex
在你的例子中:
if [[ $FUNCVALUE = *$required_keyword* ]]
if [[ $FUNCVALUE =~ .*$required_keyword.* ]]
答案 1 :(得分:0)
不确定我是否理解你想要的东西,但是如果你需要找出变量“b”中是否存在字符串“a”的一部分,你只需使用grep。
grep -q "a" <<< "$b"
[[ "$?" -eq 0 ]] && echo "Found" || echo "Not found"
编辑:为了澄清,grep在变量b中搜索字符串a并返回退出状态(参见man grep,因此是-q开关)。之后,您可以检查退出状态并执行任何操作(使用我的示例或使用常规if语句)。