我正试图在一个更大的字符串中寻找一个小字符串。两个字符串都存储为变量,这里是一个代码示例:
#!/bin/bash
long_str=$(man man)
shrt_str="guide"
if grep -q $shrt_str $long_str ; then
echo "Found it!"
fi
我不认为变量扩展按照我期望的方式工作。我已经尝试过 [ ]
和 [[ ]]
,也引用变量并将输出通过管道传输到 /dev/null
但无论我做什么这样做是行不通的。
有没有人有什么想法?
最佳答案
if echo "$long_str" | grep -q "$shrt_str";then
echo "found"
fi
或
echo "$long_str" | grep -q "$shrt_str" && echo "found" || echo "not found"
但既然您使用的是 bash shell,那么就使用 shell 内部结构。无需调用外部命令
shrt_str="guide"
case "$long_str" in
*"$shrt_str"* ) echo "Found";;
* ) echo "Not found";;
esac
关于bash - 我怎样才能grep变量中的复杂字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2106526/