0
予想される出力は次のようになります。
私のシェルスクリプトは、これまでのところ、このようになります::私は2つの別々の問題に遭遇してい
# Determine CPU load
pcpu=$(ps -Ao pcpu | awk '{sum = sum + $1}END{print sum}')
# Determine MEM load
mem=$(ps -Ao rss | awk '{sum = sum + $1}END{print sum}')
# Determine total MEM
tmem=$(cat /proc/info | awk '/MemTotal/ {print $2}')
# Helper function to convert KB to KB/MB/GB/TB
pretty_print() {
# We start with KB from /proc/meminfo and ps
[ $1 -lt 16384 ] && echo "${KB} K" && return
MB=$((($1+512)/1024))
[ $MB -lt 16384 ] && echo "${KB} M" && return
GB=$((($MG+512)/1024))
[ $GB -lt 16384 ] && echo "${KB} G" && return
TB=$((($GB+512)/1024))
[ $TB -lt 16384 ] && echo "${KB} T" && return
}
# Helper function to print bars for percentages
print_bars() {
local GREEN='\033[32m'
local YELLOW='\033[33m'
local RED='\033[31m'
local RESET='\033[0m'
local current=$(($1*10/$2))
local bars=0
while [ $current -gt 0 ]; do
[ $bars -lt 3 ] && echo $GREEN
[ $bars -gt 2 ] && echo $YELLOW
[ $bars -gt 5 ] && echo $RED
echo '|'
current=$(($current - 1))
bars=$((bars + 1))
done
echo $RESET
while [ $bars -lt 10 ]; do
echo ' '
bars=$((bars + 1))
done
}
# Output: CPU $pcpu [||| ] - MEM $mem/$tmem [||| ]
echo CPU $pcpu \[$(print_bars $pcpu 100)\] - MEM $(human_print $mem)/$(human_print $tmem) \[$(print_bars $mem $tmem)\]
- すべての終了スペースは、出力
print_bars
から削除されます。カラーコード(\033[Xm
)の間にスペースを入れて、私の端末にスペースとして印刷されている:これは、より多くの迷惑と、このポストの理由が[| ]
または[|||| ]
代わりに、適切な[| ]
のと[|||| ]
- のようなものを印刷する原因となっていますそのような棒:あなたは余分なスペースを削除単語の分割を防止する
print_bars
への呼び出しの周りに二重引用符を配置する必要があり
を使用する必要がありますか? – Barmar
主に聞いたことがないので、私はそれを調べます – stevendesu