Я пишу сценарий оболочки с несколькими переменными, которые должны быть настроены пользователем. Там будет установщик для загрузки и настройки скрипта, возможно, задавая ряд вопросов. Рассматриваемый скрипт предназначен для других разработчиков.
Это может быть реализовано несколькими способами:
Используйте заполнители в самом скрипте и используйте
sed
для их замены во время установки (что-то вроде этого: /programming/415677/how-to-replace-placeholder-in-a-text-file )Плюсы: все определения переменных содержатся в скрипте. Скрипт легко загрузить вручную и настроить переменные для пользователей, которые предпочитают редактор над установщиком.
Минусы: Трудно перенастроить переменные через установщик, как только они появятся. Если я не создам более сложное регулярное выражение, которое будет подвержено ошибкам.
Используйте файл конфигурации , в основном другой сценарий оболочки с назначениями, и используйте его
source
для включения. (И, вероятно, поместите это в~/.scriptname
? Основной сценарий скопирован в/usr/local/bin
)Плюсы: легко перенастроить скрипт. Можно даже добавить параметр для этого из основного сценария (возможно, будет работать и в первом решении, но редактирование сценария из себя не очень хорошая идея)
Минусы: сценарий теперь зависит от двух файлов, и пользователь должен запустить установщик для файла конфигурации, который будет создан. Это может быть решено автоматической генерацией файла конфигурации, если он не существует. Но поиск внешнего файла конфигурации все еще будет более обременительным для пользователей, которые просто хотят скачать сценарий, отредактировать его и покончить с этим.
Кроме того, несколько опций относительно того, как конфигурация должна управляться пользователем после установки:
Git, как
$ 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
Есть ли другие способы сделать это, что вы бы рассмотреть?
Любые лучшие практики, что-нибудь элегантное?