次のように2つの変数が割り当てられているとします。
psaux=`ps aux | grep someProcessName`
pscount=`ps aux | grep someProcessName | wc -l`
「ps aux | grep someProcessName」部分が一度だけ実行されるように、割り当てを1行にまとめたいと思います。したがって、実行の間に何も変更できないことを知っています。
私が思いつく最も近いのは、次のような奇妙な疑似コードです。
read psaux pscount <<<$(ps aux | grep someProcessName | tee &1 | wc -l)
答え1
最初の変数をもう一度使用してください。
psaux="$( ps aux | grep "someProcessName" )"
pscount="$( printf '%s\n' "$psaux" | wc -l )"
このコマンドはgrep
一度だけ呼び出されます。
これらの呼び出しの結果は、行数を計算するために再利用されます。