Форматированный вывод сценария оболочки

FreePBX никогда не сжимает свободное пространство в astdb. Вы можете добавить ручное задание sqlite3 script / cron, которое каждую ночь сжимает AstDB. Например:

sqlite3 /var/lib/asterisk/astdb.sqlite3 "VACUUM;"

Это одна из многих "интересных" особенностей FreePBX.

6
23.03.2018, 12:59
3 ответа

Вы не использовали инструмент для форматирования вывода, и поскольку $iстановится шире, вывод не выравнивается.

Заменить

echo "$i $OK"

с

printf "%-50s %s\n" "$i" "$OK"

(замените "foo" фактической строкой ).

где

  • 50s— строка из 50 символов фиксированной ширины,
  • -(минус )влево -выравнивание строки.
  • подробности о строке формата см. в man 3 printf.
6
27.01.2020, 20:20

Используйте следующий printfподход для получения необходимого результата:

#!/bin/bash
for i in a aa aaa aaaa aaaaaa aaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa; do
    printf '%-50sOK\n' $i 
done

Вывод сценария:

a                                                 OK
aa                                                OK
aaa                                               OK
aaaa                                              OK
aaaaaa                                            OK
aaaaaaaaaaaaaaaaa                                 OK
aaaaaaaaaaaaaaaaaaaaaaaaaa                        OK

  • OK-при перемещении статической строки в ФОРМАТ(printf FORMAT [ARGUMENT])

  • $i-считается printfаргументом

19
27.01.2020, 20:20

Простой способ:

направьте ваш скрипт наcolumn -t

$ script.sh | column -t
a                           OK
aa                          OK
aaa                         OK
aaaa                        OK
aaaaaa                      OK
aaaaaaaaaaaaaaaaa           OK
aaaaaaaaaaaaaaaaaaaaaaaaaa  OK
20
27.01.2020, 20:20

Теги

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