$() 中的管道命令

$() 中的管道命令

这是我尝试运行的 shell 脚本的示例,但它没有打印出 grep 的结果,而是打印了整个字符串。 难道不能在 中使用管道吗$()

i="the cat is a crazy"; word=$( echo $i | grep cat); echo $word;

答案1

你刚刚跑步了吗

$ echo $i | grep cat
> the cat is a crazy

来自手册

Grepprint lines matching a pattern

您想使用 -

-o, --only-matching
Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.

$ i="the cat is a crazy"; word=$( echo $i | grep -o cat ); echo $word;
> cat

答案2

您只想grep -o从一行中获取一个单词。grep的默认行为是打印出找到匹配项的整行。

相关内容