0
TMPFILE=/tmp/jboss_ps.$$
     ${PS} ${PS_OPTS} | \
     grep ${JBOSS_HOME}/java | \
     egrep -v " grep | \
     tee | $0 " | ${AWK} '{print $NF " "}' | \
     sort -u > ${TMPFILE} 2>/dev/null

我想从上面的代码中知道这条精确的线在做什么

egrep -v " grep | \
     tee | $0 "

起初我认为该行正在搜索不包含这个确切字符串“grep | \ tee | $0”的所有内容,但似乎egrep正在处理管道,那么管道在这里的意义是什么,是不是意味着OR?从我的测试看来它不是,但如果它意味着输出重定向,那么内部 grep 得到了什么?为什么 tee 也是一个人呢?

4

2 回答 2

0

egrep 命令之前的管道中的命令可能类似于 ps -ef|grep ...。您询问的 egrep -v (选项)行只是省略了您不希望在结果中出现的行,在这种情况下脚本发出的初始 grep 命令,任何 tee 命令,最后是 $0,它是正在执行的此脚本的名称。egrep 允许输入用双引号括起来并用管道符号分隔的多个模式。语法 egrep -[option or not] "pattern1|patern2|patern..."

于 2013-10-31T14:55:01.710 回答
0

AFAIK

egrep -v " grep | \
     tee | $0 "

只不过是

egrep -v " grep | tee | $0 "

\bash中的延续字符在哪里。

egrepgrep -E

-v 用于反向选择

tee只是另一个字符串

所以egrep -v " grep | tee | $0 "确实找到了具有字符串 {java path} 的行,并且在此结果中,所有与条件不匹配的行 {either of grep OR tee OR $0 } where $0 is the filename not a '$0'因为它使用双引号而不是单引号 :)

" commands | $variables "有扩大变量和使用效用的趋势。

于 2013-10-30T00:15:30.850 回答