Bash Script Форматирование вывода "Использование"

Что такое хороший способ вывода текста справки для bash script для правильного выравнивания строк столбцов?

что-то вроде:

 Usage: mycommand [options]

    -h| --help           this is some help text.
                         this is more help text.
    -1|--first-option    this is my first option
    -2|--second-option   this is my second option

Ответ 1

Мне нравится использовать cat для этого:

usage.sh:

#!/bin/bash

cat <<EOF
Usage: $0 [options]

-h| --help           this is some help text.
                     this is more help text.
-1|--first-option    this is my first option
-2|--second-option   this is my second option
EOF

Это выведет:

Usage: usage.sh [options]

-h| --help           this is some help text.
                     this is more help text.
-1|--first-option    this is my first option
-2|--second-option   this is my second option

Ответ 2

У Heredocs также есть вкладка с отступом. Это позволяет вам предисловие каждой строки кода с любым количеством вкладок - и они будут "съедены" на выходе, оставив вас оправданием. Обратите внимание, что конечный "EOF" (в этом примере) ДОЛЖЕН быть полностью оставлен с отступом - "EOF" не может иметь вкладку с отступом.

Будьте осторожны с любыми редакторами, которые преобразуют символы табуляции в пробелы (например, опция "vi" - это "expandtab", которая преобразует вкладки в пробелы). К сожалению, несколько пробелов не "съедаются", как вкладки. Если вы используете "expandtab" (или аналогичные параметры) для форматирования кода, то метод отступа вклада heredoc вряд ли будет вам полезен.

В приведенном ниже примере "< lt; -" является синтаксисом для heredoc для оценки отступов вкладки.

Пример:

    cat <<-EOF
    usage.sh [options]

    -h| --help           this is some help text.
                         this is more help text.
    -1|--first-option    this is my first option
    -2|--second-option   this is my second option
EOF

Обратите внимание, что перед "cat" есть "вкладки", а последующие строки - форматирование HTML здесь, скорее всего, не позволит вам вырезать-вставить пример.

Обратите внимание, что завершающий "EOF" остается оправданным.