任何人都能说出这条线究竟是什么意思吗?这里grep命令多次使用。
#chkCount=`ps -aef | grep -i "File_Transfer.sh"|grep -v grep| wc -l`
答案 0 :(得分:2)
让我们一块一块地打破这一局面。首先,命令被注释掉,因此在删除起始#
chkCount=`ps -aef | grep -i "File_Transfer.sh"|grep -v grep| wc -l`
命令ps -aef | grep -i "File_Transfer.sh"|grep -v grep| wc -l
的输出将存储在变量chkCount
中。
grep -i "File_Transfer.sh"
查找包含“File_Transfer.sh”的行,但grep将忽略字符串的大小写。这意味着grep将匹配“File_Transfer.sh”,“File_TRANSFER.SH”或任何其他组合。
grep -v grep
将匹配任何不包含单词grep
的行。 -v
反转比赛。这样做的目的是消除您发出的命令。换句话说,ps
将列出名为File_Transer.sh
的流程,它会列出您的命令ps -aef | grep -i "File_Transfer.sh"|grep -v grep| wc -l
。 grep -v
会忽略ps -aef | grep -i "File_Transfer.sh"|grep -v grep| wc -l
,只会匹配与File_Transfer.sh
匹配的任何流程
最后,wc -l
会计算输入wc
的行数。因此,结果将是运行的进程数与“File_Transfer.sh”匹配
答案 1 :(得分:0)
此行列出了包含" File_Transfer.sh"的所有正在运行的进程和过滤器行。
然后进一步过滤输出以删除包含" grep"的行,因为grep命令本身将显示为带有文本" File_Transfer.sh"的运行进程。 / p>
wc -l计算找到的行数。
答案 2 :(得分:0)
多次使用grep(像这样的管道组合)就像一个两级滤波器;根据第二个实例的参数,将再次过滤从第一个实例传递的任何行。在这种情况下,ps -aef
的结果通过管道传递给grep,它对“File_Transfer.sh”进行不区分大小写的搜索;然后grep输出的所有行再次被送到grep,它传递所有不包含grep
的行(-v表示“反向匹配”,查找不匹配的行,而不是什么) wc - 最后,最终结果(发生次数)被分配给变量chkCount。