gpt4 book ai didi

linux - |删除 : can't open | grep: can't open grep

转载 作者:太空宇宙 更新时间:2023-11-04 05:15:54 28 4
gpt4 key购买 nike

FILTER="grep -w PROD | grep -v PROD_OPL"

if (/usr/ucb/ps auxww | grep $1/$2 | $FILTER > /dev/null)
then
#do something
fi

给出输出:

grep: can't open |
grep: can't open grep
grep: can't open -v
grep: can't open PROD_OPL
grep: can't open |
grep: can't open grep
grep: can't open -v
grep: can't open PROD_OPL

我该如何解决这个问题? $FILTER需要是动态的。

最佳答案

要存储命令以供以后使用,您将需要使用一个函数。

这是一个基本示例,它将执行两个特定的 grep 命令:

function filter() { 
grep -w PROD | grep -v PROD_OPL
}

if (/usr/ucb/ps auxww | grep $1/$2 | filter > /dev/null)
then
#do something
fi

grep $1/$2 的输出通过管道传输到函数的输入,函数将其传递到管道,管道的输出传递到函数的输出。

函数的返回代码隐式保留为其最后一个命令之一,因此仅当过滤器匹配某些行时 if 条件才会为 true。

就动态而言,该函数可以随时重新定义,因此您可以根据需要重新定义过滤器。不过,更好的解决方案可能是对该函数进行参数化,以便它根据需要实现所需的过滤器。

我需要更多的输入来提供足够的函数(或者甚至可能是足够的 grep 命令,正则表达式可以很强大......),但您可以想象一个函数,它过滤不包含任何以 ! 为前缀的参数以及所有其他参数的行。

关于linux - |删除 : can't open | grep: can't open grep,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49558283/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com