0

このように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

また、結果には 2 つ以上の引数も含まれる場合があります。これを実行して、必要な結果を得ることができません。誰かがこれの何が間違っているのか、どのように修正する必要があるのか​​ 提案してもらえますか.

4

1 に答える 1

1

パイプラインを変数に格納する必要があるのはなぜですか?

代わりに関数を使用できます。

find_process() {
    typeset search_pattern=$(sed 's/^./[&]/' <<<"$1")
    ps -e -o args | grep "$search_pattern"
}
find_process abcde 

これはより良いことに注意してくださいpgrep。システムにインストールされているかどうかを確認します

「2つの引数」について - あなたの質問は何ですか? 結果に対して何をする必要がありpsますか?行を言葉に読み上げることに興味がある場合は、

... | while read -rA words; do
    : do something with the array "${words[@]}"
done
于 2013-06-26T18:25:47.587 に答える