Bash 如何绕过grep/egrep的影响?

Bash 如何绕过grep/egrep的影响?,bash,grep,Bash,Grep,让我说清楚 我写了一个bash脚本,它包含几个参数;它将首先将参数传递给commandps,例如: $。/myscript.sh-wef | egrep.*somethingtomatch.*” 脚本将把-wef | egrep.*somethingtomatch.*”传递到ps,以生成ps-wef | egrep.*somethingtomatch.*” 然后我的脚本的其余部分将执行其他操作,它将有其他输出到屏幕。 但是,由于我对bash的原始输入是$./myscript.sh-wef | e

让我说清楚

我写了一个bash脚本,它包含几个参数;它将首先将参数传递给command
ps
,例如:

$。/myscript.sh-wef | egrep.*somethingtomatch.*”

脚本将把
-wef | egrep.*somethingtomatch.*”
传递到
ps
,以生成
ps-wef | egrep.*somethingtomatch.*”

然后我的脚本的其余部分将执行其他操作,它将有其他输出到屏幕。

但是,由于我对bash的原始输入是
$./myscript.sh-wef | egrep.*somethingtomatch.*.
,这使得脚本的其他输出不可见,因为
egrep
的影响

如何使这些其他输出可见并保持原始输入格式?我不想在
$./myscript.sh-wef | egrep.*somethingtomatch.*.

非常感谢

脚本将通过
-wef | egrep“*somethingtomatch.*”
ps
,以生成
ps-wef | egrep“*somethingtomatch.*”

否,它会将
-wef
传递到
ps
,然后将程序的输出通过管道传递到
egrep.*somethingtomatch.*

您不想更改语法,因此无法解决您的问题。放松你的限制


最简单的方法是将其作为第二个参数传递:
/myscript.sh-wef somethingtomatch

您不能将裸管道(
|
)作为参数。时期您需要像
\\\124;
一样对其进行转义。因此,如果您不想在调用中添加任何符号,那么您唯一的解决方案就是编写另一个shell,或者使用另一个字符构建bash到管道

请注意,逃离管道标志不会有帮助。呃,@KarolyHorvath:你是什么意思?因为它会将字符
“|”
作为参数发送到这里的
myscript.sh
。。嗯,是的,你可以编写一个脚本来检测它,然后过滤结果,但这将是一个非常难看的解决方案。@Karoly:我仍然不明白你说的
\\124;
不起作用的原因。比如说。你所说的丑陋的黑客行为在哪里?或者你指的是
ps$@
在文件中不起作用,OP必须使用其他方法,例如
eval“ps$@”使管道再次作为管道工作?好的,那么我们彼此理解:问题不是将
\\\\\\\
\\\\\\\
一起传递给脚本,而是在脚本中以安全可靠的方式将其重新解释为实际管道。