Я пишу сценарій оболонки з кількома змінними, які повинен налаштувати користувач. Буде встановлена програма для завантаження та налаштування сценарію, можливо, задавши серію запитань. Роздільний сценарій спрямований на інших розробників.
Це може бути реалізовано кількома способами:
Використовуйте заповнювачі у самому сценарії та використовуйте
sed
для заміни їх під час встановлення (приблизно так: /programming/415677/how-to-replace-placeholders-in-a-text-file )Плюси: всі визначення змінних містяться в сценарії. Завантажити скрипт легко вручну та налаштувати змінні для користувачів, які віддають перевагу редактору над інсталятором.
Мінуси: Важко переналаштувати змінні через інсталятор, як тільки вони будуть на місці. Якщо я не створять більш складний регулярний вираз, який був би схильний до помилок.
Використовуйте конфігураційний файл , в основному інший скрипт оболонки з призначеннями, і використовуйте
source
для його включення. (І, можливо, розмістіть його~/.scriptname
? Основний сценарій скопійовано у/usr/local/bin
)Плюси: легко налаштувати сценарій. Можна навіть додати параметр для цього з головного сценарію (можливо, він би працював і в першому рішенні, але редагування сценарію від себе не здається дуже хорошою ідеєю)
Мінуси: сценарій тепер залежить від двох файлів, і користувачеві потрібно запустити інсталятор для створення конфігураційного файла. Це можна вирішити шляхом автоматичного генерування конфігураційного файлу, якщо такого немає. Але розміщення зовнішнього файлу конфігурації все-таки буде більш громіздким для користувачів, які просто хочуть завантажити скрипт, відредагувати його і зробити це з ним.
Також кілька варіантів щодо того, як керувати налаштуванням повинен користувач після встановлення:
Як подібний
$ myscript config server.host example.org $ myscript config server.proxypath / home / johndoe / proxy $ myscript config server.httppath / home / johndoe / webІнтерактивний
$ myscript config
Введіть ім'я хоста сервера: example.org
Введіть шлях до проксі-сервера на сервері: / home / johndoe / proxy
Введіть шлях до http-каталогу на сервері: / home / johndoe / webgetopts з довгими параметрами
$ myscript --host example.org - proxypath / home / johndoe / proxy --httppath / home / johndoe / webПростий
$ myscript config example.org / home / johndoe / proxy / home / johndoe / web
Чи є якісь інші способи зробити це, які ви б розглядали?
Будь-які найкращі практики, щось елегантне?