bash - 我怎样才能grep变量中的复杂字符串?

标签 bash variables grep if-statement

我正试图在一个更大的字符串中寻找一个小字符串。两个字符串都存储为变量,这里是一个代码示例:

#!/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/

相关文章:

utf-8 - grep 和 utf-8 编码的变音

search - 计算文件中某个模式的出现次数(即使在同一行)

linux - Bash 脚本中的变量,保持上次运行时的值

mysql - bash/mysql 提示 ) 字符

java - 关于变量赋值和分配的困惑

c - 如何在 C 中使用函数(初学者)

linux - 使用 grep 命令 Linux 查找文件的行号

linux - 如何在 shell 脚本中异步运行迭代

linux - 如何连续一行一行地组合两个文件

mysql 使用包含变量的 mysql 查询创建 View