5

Как добавить однострочный комментарий к многострочной команде

13

Я знаю, как писать многострочные команды в Bash-скрипте, но как можно добавить комментарий для каждой строки в многострочной команде? Вот пример:

CommandName InputFiles      \ # Это комментарий для 1-й строки
            --option1 arg1  \ # Это комментарий для 2-й строки
            --option2 arg2    # Это комментарий для 3-й строки

К сожалению, комментарий после символа продолжения \ нарушает выполнение команды. Как мне решить эту проблему?

2 ответ(ов)

1

Вы можете сохранить аргументы в массиве следующим образом:

args=(
    InputFiles           # Это комментарий для первой строки
    --option1 arg1       # Это комментарий для второй строки
    --option2 arg2       # Это комментарий для третьей строки
    #--deprecated-option # Опция отключена
)
CommandName "${args[@]}"

Также вы можете добавить пустые строки для повышения читаемости:

args=(

    # Это комментарий для первой строки
    InputFiles

    # Это комментарий для второй строки
    --option1 arg1

    # Это комментарий для третьей строки
    --option2 arg2

    # Опция отключена
    #--deprecated-option

)
CommandName "${args[@]}"

Если вам нужно использовать другие операторы оболочки, такие как логические операторы и пайпы, вы не можете помещать их внутри массивов, но можете "соединить" их при выполнении команды:

args1=(
    InputFiles           # Это комментарий для первой строки
    --option1 arg1       # Это комментарий для второй строки
    --option2 arg2       # Это комментарий для третьей строки
    #--deprecated-option # Опция отключена
)
args2=(
    --option arg         # Другой комментарий
    example.config
)
success=(
    # Поместите команду в массив, если это более понятно
    notify-send
    Hooray
    'Дело сделано'
)
fail=(
    notify-send
    'Ой'
    'Что-то не сработало'
)
CommandName1 "${args1[@]}" | CommandName2 "${args2[@]}" 2>> error.log && "${success[@]}" || "${fail[@]}"

Таким образом, вы можете легко управлять аргументами и различными сценариями выполнения команд в вашем скрипте.

1

К сожалению, в общем смысле вы не можете сделать то, что вы хотите. Лучшее, что вы можете сделать, это добавить комментарий на строках перед командой, или один единственный комментарий в конце строки команды, или комментарий после самой команды.

Невозможно вставить комментарии внутрь команды таким образом. Символы \ выражают намерение объединить строки, поэтому, по сути, вы пытаетесь вставить комментарии в одну строку, что в любом случае не сработает, потому что \ должен находиться в конце строки, чтобы это подействовало.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь