[英]How can I grep complex strings in variables?
我试图在一个更大的字符串中grep一个小字符串。 这两个字符串都存储为变量,这是一个代码示例:
#!/bin/bash
long_str=$(man man)
shrt_str="guide"
if grep -q $shrt_str $long_str ; then
echo "Found it!"
fi
我认为变量扩展并不像我期望的那样发挥作用。 我试过[ ]
和[[ ]]
,同时引用变量并将输出/dev/null
到/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
grep用于文件或stdin。 如果你想使用变量作为stdin,那么你需要使用bash的herestring表示法:
if grep -q "$shrt_str" <<< "$long_str" ; then
你要
if echo $long_str | grep -q $shrt_str; then
另一种特定于Bash的技术:
if [[ $long =~ $short ]] # regex match
then
echo "yes"
fi
但是如果你不需要变量中的长字符串:
if man man | grep $short; then ...
但我认为这只是为了举个例子。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.