抽象的な:

抽象的な:

レモンバーの設定を試して設定するには、このガイドに従っています。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

awkreadすべての '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$IFSawkread t fzsh

上記と上記bash-4.4は必要です{ read t; read f; } <<< "$(awk...)"$(...)bash-4.3以前のバージョンでも機能するためにここに引用符を追加し、デフォルト値はまだ仮定されています$IFS)。

おすすめ記事