Задать вопрос
@kavabangaungava

Как получить вывод в рамке с переносом строк?

Есть скрипт, который выводит системную инфу
VAR=$(echo -e "$MEM\n$HDD\n$CPU")
echo "$VAR2"

вывод
Memory Usage: 277/1983MB (13.97%)
Disk Usage: 5/16GB (35%)
CPU Load: 0.00

Хочу создать рамку вокруг вывода, для этого использую функцию
banner() {
    msg="# $* #"
    edge=$(echo "$msg" | sed 's/./#/g')
    echo "$edge"
    echo "$msg"
    echo "$edge"
}

banner $VAR

Вывод
#############################################################################
# Memory Usage: 277/1983MB (13.97%) Disk Usage: 5/16GB (35%) CPU Load: 0.00 #
#############################################################################


Не получается сделать вывод построчный
  • Вопрос задан
  • 144 просмотра
Подписаться 1 Средний 1 комментарий
Решения вопроса 1
xotkot
@xotkot
хорошо есть и хорошо весьма
Хочу создать рамку вокруг вывода, для этого использую функцию
msg="# $* #"

что-то вообще не то

как вариант размер можно контролировать через column
MEM="Memory Usage: 277/1983MB (13.97%)"
HDD="Disk Usage: 5/16GB (35%)"
CPU="CPU Load: 0.00"
VAR="$MEM\n$HDD\n$CPU"
banner() {
	v="$@"
	x=$(echo -e "$v" |awk '{if(length>max)max=length}END{for(i=1;i<max+5;i++){printf "#"}}')
	echo "$x"
	echo -e "$v" |awk '{print "# "$0" #"}' |column -t -s: -o: |column -t -s'#' -o'#'
	echo "$x"
}
banner "$VAR"

вывод
#####################################
# Memory Usage: 277/1983MB (13.97%) #
# Disk Usage  : 5/16GB (35%)        #
# CPU Load    : 0.00                #
#####################################


хотя если есть возможность изначально контролировать вид получение MEM, HDD, CPU то будет проще записать данные через тот же csv а его вывод уже форматировать соответствующими программами, например csview

MEM="Memory,277/1983MB,13.97%"
HDD="Disk,5/16GB,35%"
CPU="CPU,0.00,"
echo -e "$MEM\n$HDD\n$CPU" |csview -H --style Reinforced

вывод:
┏────────┬────────────┬────────┓
│ Memory │ 277/1983MB │ 13.97% │
│ Disk   │ 5/16GB     │ 35%    │
│ CPU    │ 0.00       │        │
┗────────┴────────────┴────────┛
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev Куратор тега bash
software engineer
MEM="Memory Usage: 277/1983MB (13.97%)"
HDD="Disk Usage: 5/16GB (35%)"
CPU="CPU Load: 0.00"

banner() {
max=$(echo -e "$1"|awk '{if(length>max)max=length}END{printf max}')
echo -e "$1"|awk 'BEGIN{for(i=1;i<'$max'+4;i++){printf "#"};print "#"}{printf "# %'$max's #\n", $0}END{for(i=1;i<'$max'+4;i++){printf "#"};print "#"}'
}

banner "$MEM\n$HDD\n$CPU"


$ banner "$MEM\n$HDD\n$CPU"
#####################################
# Memory Usage: 277/1983MB (13.97%) #
#          Disk Usage: 5/16GB (35%) #
#                    CPU Load: 0.00 #
#####################################
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы