Как добавить однострочный комментарий к многострочной команде
Я знаю, как писать многострочные команды в Bash-скрипте, но как можно добавить комментарий для каждой строки в многострочной команде? Вот пример:
CommandName InputFiles \ # Это комментарий для 1-й строки
--option1 arg1 \ # Это комментарий для 2-й строки
--option2 arg2 # Это комментарий для 3-й строки
К сожалению, комментарий после символа продолжения \
нарушает выполнение команды. Как мне решить эту проблему?
2 ответ(ов)
Вы можете сохранить аргументы в массиве следующим образом:
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[@]}"
Таким образом, вы можете легко управлять аргументами и различными сценариями выполнения команд в вашем скрипте.
К сожалению, в общем смысле вы не можете сделать то, что вы хотите. Лучшее, что вы можете сделать, это добавить комментарий на строках перед командой, или один единственный комментарий в конце строки команды, или комментарий после самой команды.
Невозможно вставить комментарии внутрь команды таким образом. Символы \
выражают намерение объединить строки, поэтому, по сути, вы пытаетесь вставить комментарии в одну строку, что в любом случае не сработает, потому что \
должен находиться в конце строки, чтобы это подействовало.
Как выводить команды оболочки по мере их выполнения
Назначение значений по умолчанию для переменных оболочки одной командой в bash
Как указать приватный SSH-ключ для выполнения команды shell в Git?
Как узнать, в какой интерактивной оболочке я нахожусь (командная строка)
Расширение переменных внутри одинарных кавычек в команде Bash