我需要在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
结果中也可能有两个以上的参数。 我无法执行此操作并获得我想要的结果。 有人可以建议这有什么问题以及我需要如何纠正它。
答案 0 :(得分:1)
为什么需要将pipline存储在变量中?
您可以改用函数:
find_process() {
typeset search_pattern=$(sed 's/^./[&]/' <<<"$1")
ps -e -o args | grep "$search_pattern"
}
find_process abcde
请注意,pgrep
可以做得更好。看看它是否已安装在您的系统上
关于“两个参数” - 你的问题是什么?您需要对ps
结果做些什么?如果你有兴趣阅读一行文字,那么
... | while read -rA words; do
: do something with the array "${words[@]}"
done