执行管道命令并在结果上循环的ksh脚本

执行管道命令并在结果上循环的ksh脚本,ksh,Ksh,我需要像这样在ksh中运行一个长管道命令 cmd='ps -e -o args | /usr/bin/grep abcde | /usr/bin/grep -v grep' 然后执行这个命令。 然后循环计算结果。 所以我试着用上面这句话然后 $cmd | while read $arg1 $arg2 ; do echo $arg1 $arg2 blah $arg1 $arg2 done 结果中也可以有两个以上的参数。 我无法执行此操作并得到我想要的结果。 有人能告诉我这有什

我需要像这样在ksh中运行一个长管道命令

cmd='ps -e -o args | /usr/bin/grep abcde | /usr/bin/grep -v grep'
然后执行这个命令。 然后循环计算结果。 所以我试着用上面这句话然后

$cmd | while read $arg1 $arg2 ; do
    echo $arg1 $arg2
    blah  $arg1 $arg2
done
结果中也可以有两个以上的参数。 我无法执行此操作并得到我想要的结果。 有人能告诉我这有什么问题,我需要如何纠正它吗

为什么需要将pipline存储在变量中

您可以改为使用函数:

find_process() {
    typeset search_pattern=$(sed 's/^./[&]/' <<<"$1")
    ps -e -o args | grep "$search_pattern"
}
find_process abcde 
... | while read -rA words; do
    : do something with the array "${words[@]}"
done