配列を値としてbash変数を印刷する方法

配列を値としてbash変数を印刷する方法

ステータスバー用のスクリプトを作成しましたdwm。そのうちのいくつかは、システムの各コアの現在のCPU使用率を見つけることです。自分で方法を見つけましたが、その中のバグを修正するのに助けが必要です。これは注文です: top -bn 2 -d 0.5 | grep -F '%Cpu' | tail -n 4 | awk '{print $3}'。これはtop基本的に各コアを表示すると仮定します。topを押して1W現在の設定を.toprcホームフォルダのファイルに保存します。これtopで、開くたびにすべてのコアが表示されます。前述のコマンドには、次の変数に割り当てると欠点があります。

CPU=$(top -bn 2 -d 0.5 | grep -F '%Cpu' | tail -n 4 | awk '{print $3}')

次に、次のように使用します。$CPUステータスバーに目的の出力が表示されますが、各CPUパーセントの間には2つのシンボルがあり、それらを合計します。どのように削除しますか?ここでは、文字列の代わりに配列を使用することに関連していますか?xsetrootxsetroot -name "$CPU"vt

左側に質問がありますか?

注文する:

top -bn 2 -d 0.5 | grep -F '%Cpu' | tail -n 4 | awk '{print $3}'

出力例:

14.3
12.0
8.0
10.0

このスクリプトを使用するすべての人のための注意:コアのCPU使用率100%このコマンドによってアレイ出力に達すると、現在負荷がある列がある列から3別の列に移動されます2。したがって、列の出力がawk '{print $3}'表示されます。よろしければ、ただ残してください。そうでない場合は、印刷バーを使用することもできます。それではそうします。これらのトラップをすべて回避する解決策は次のとおりです。us,3awk2:

top -bn 2 | grep -F '%Cpu' | tail -n 4 | gawk '{print $2 $3}' | tr -s '\n\:\,[:alpha:]' ' '

ベストアンサー1

私にとって、値の間の「もの」は、次を使用するときに取得できる改行文字(8進文字コード12)の視覚的表現のようです。

echo -e 'a\012b'

次のように出力をパイピングしてみることができますtr '\n' ' '

echo -e 'a\012b' | tr '\n' ' '

おすすめ記事