Bash 如何绕过grep/egrep的影响?
让我说清楚 我写了一个bash脚本,它包含几个参数;它将首先将参数传递给commandBash 如何绕过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
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$@”代码>使管道再次作为管道工作?好的,那么我们彼此理解:问题不是将\\\\\\\
与\\\\\\\
一起传递给脚本,而是在脚本中以安全可靠的方式将其重新解释为实际管道。