レモンバーの設定を試して設定するには、このガイドに従っています。http://blog.z3bra.org/2014/04/meeting-at-the-bar.html
今、次の行を除いて、ほとんどすべてが完璧に動作します。
bc <<< "scale=2; 100 - $f / $t * 100" | cut -d. -f1
この機能では:
memused() {
read t f <<< `grep -E 'Mem(Total|Free)' /proc/meminfo |awk '{print $2}'`
bc <<< "scale=2; 100 - $f / $t * 100" | cut -d. -f1
}
次のエラーが発生します。(standard_in) 1: syntax error
今私が知っている限り、方程式の周りに二重括弧を追加する必要があります。(())
しかし、さまざまな配列を試しましたが、何もエラーを修正できませんでした。
ベストアンサー1
awk
read
すべての 's、cut
's、grep
's、およびbc
's はここで実行できます。
awk -F': *' '
$1 == "MemTotal" {t = $2}
$1 == "MemFree" {f = $2}
END {printf "%.1f%%\n", (t - f) * 100 / t}' /proc/meminfo
awk
カンマを小数点以下で使用するロケールでは、すべての実装が40.5ではなく40.5%を出力するわけではありません(GNUは環境とawk
同様にPOSIXモードでのみこれを行います)。小数点の下をピリオド/ドットに強制変換する$POSIXLY_CORRECT
ために使用されます。LC_ALL=C awk...
少数の部分がまったく必要ない場合に%.1f
変更します。%.0f
これは丸められます最近整数。%d
少数の部分を切り捨てるには(99.999は100%ではなく99%です)、別の方法を使用してください。
変更されていないと見なされる以前のバージョンで作業しますread t f <<< `grep -E 'Mem(Total|Free)' /proc/meminfo |awk '{print $2}'`
。bash
$IFS
では、cmd <<< `code`
出力を文字(デフォルトでは改行を含む)に分割しbash
、コマンドを標準入力として入力する前に、最初の文字(デフォルトでは空白)に関連付けるために使用されます。したがって、あなたの場合、出力の2行は期待どおりに1行に2単語で提供されます。この驚くべき動作(bash-4.4の元の実装とは異なります)はbash-4.4で修正されました。code
$IFS
$IFS
awk
read t f
zsh
上記と上記bash-4.4
は必要です{ read t; read f; } <<< "$(awk...)"
($(...)
bash-4.3以前のバージョンでも機能するためにここに引用符を追加し、デフォルト値はまだ仮定されています$IFS
)。