5

リストを返す bash スクリプトがありますが、これが必要ですが、for ループで一度に 1 つずつ操作できるように、結果を変数に入れる必要があります。

#!/bin/bash
processID="ps aux | grep `date +"%b"` | gawk '{print \$2}'"

eval $processID

eval の結果を変数に代入するにはどうすればよいですか? ありがとう

4

2 に答える 2

2
pid=$( ps aux | grep `date +"%b"` | awk '{print $2}' )
于 2012-04-06T21:46:16.940 に答える
0

すでに awk を使用しているため、grep の必要性をなくすことができます。単一引用符内では展開が行われないため、「$」をエスケープする必要はありません。

pid=$(ps aux | awk -vdate=$(date +%b) '$0 ~ date { print $2 }')

複数の pid が返されることが予想される場合は、配列を使用します。

pids=($(ps aux | awk -vdate=$(date +%b) '$0 ~ date { print $2 }'))

for pid in "${pids[@]}"; do
   ...
done
于 2012-04-06T22:12:07.737 に答える