51

ちょっとした問題で立ち往生しています。出力を awk にパイプするコマンドがありますが、出力を配列に 1 つずつキャプチャしたいと考えています。

私の例:

myarr=$(ps -u kdride | awk '{ print $1 }')

しかし、それはすべての出力をコンマで区切られた 1 つの巨大な文字列にキャプチャします。

output: PID 3856 5339 6483 10448 15313 15314 15315 15316 22348 29589 29593 32657 1

私も次のことを試しました:

IFS=","
myarr=$(ps -u kdride | awk '{ print $1"," }')

But the output is: PID, 3856, 5339, 6483, 10448, 15293, 15294, 15295, 15296, 22348, 29589, 29593, 32657,
1

個々の pid を独自の配列要素にキャプチャできるようにしたいと考えています。設定IFS = '\n'は何もせず、元の出力を保持します。これを機能させるには、どのような変更を行う必要がありますか?

4

2 に答える 2

95

次のように括弧を追加します。

myarr=($(ps -u kdride | awk '{ print $1 }'))

# Now access elements of an array (change "1" to whatever you want)
echo ${myarr[1]}

# Or loop through every element in the array
for i in "${myarr[@]}"
do
   :
  echo $i
done

bash— 配列も参照してください。

于 2013-02-27T06:00:39.190 に答える