You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Bash中检查变量字符串是否存在于目标字符串的问题求助

问题原因及解决方法

错误点分析

  1. 变量赋值语法错误:你定义string1时用了string1 = "...",Shell中等号两边不能有空格,这种写法会让Shell把string1当成命令执行,导致变量根本没被正确赋值。
  2. 变量引用未加引号:echo $string1没有用引号包裹变量,Shell会对变量内容做分词、空白压缩处理,破坏原字符串结构,同时如果变量包含特殊字符会引发意外解析。

正确操作步骤

1. 正确定义string1

string1="Hello there, my name is Jack.
Hello there, my name is Jack.
Hello there, my name is Jack."

2. 读取输入字符串

read string2

3. 正确匹配字符串

用引号包裹所有变量,避免Shell解析干扰:

output=$(echo "$string1" | grep -o "$string2")
echo "$output"

或者更高效的写法(无需echo,用here-string传递输入):

output=$(grep -o "$string2" <<< "$string1")
echo "$output"

验证结果

当输入string2="name"时,上述命令会输出三次name(对应原字符串中的三处匹配)。

内容的提问来源于stack exchange,提问作者SRIVIDYA REDDY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 22:09:15