有时我发现能够在字符串上使用 grep(字符串不在文件中)非常有用。
例如:
var="Some random string"
$var | grep -e "Some"
我想我可以使用echo $var | grep ...
,但我真的不希望字符串写在控制台上。
答案1
echo $var | grep -e "Some"
实际上是正确的方法。当使用 grep 管道输出时|
,它不再出现在控制台上。从Bash 的手册页:
管道
管道是由控制运算符 或 分隔的一个或多个命令序列
|
。|&
管道的格式为:[time [-p]] [ ! ] command [ [|│|&] command2 ... ]
的标准输出
command
通过管道连接到 的标准输入command2
。此连接在命令指定的任何重定向之前执行(请参阅 REDIRECTION)。如果|&
使用 ,则 的标准错误通过管道command
连接到的标准输入;它是 的简写。标准错误的这种隐式重定向在命令指定的任何重定向之后执行。command2
2>&1 |
答案2
bash 现在允许这里的字符串,例如:
var="Some random string"
grep -e "Some" <<<"$var"