我正在编写带有一些应由用户配置的变量的shell脚本。可能会出现一系列问题,将提供一个用于下载和配置脚本的安装程序。该脚本针对其他开发人员。
这可以通过多种方式实现:
在脚本本身中使用占位符,并
sed
在安装过程中用于替换占位符(如下所示:https : //stackoverflow.com/questions/415677/how-to-replace-placeholders-in-a-text-file)优点:所有变量定义都包含在脚本中。手动下载脚本并为喜欢编辑器而不是安装程序的用户配置变量很容易。
缺点:一旦安装到位,就很难通过安装程序重新配置变量。除非我创建一个更复杂的正则表达式,否则容易出错。
使用配置文件(基本上是另一个带有分配的shell脚本),并使用
source
它来包含它。(并且可能将其放置在~/.scriptname
?主脚本已复制到中/usr/local/bin
)优点:重新配置脚本很容易。甚至可以从主脚本中添加用于这样做的参数(可能也可以在第一个解决方案中使用,但是从本身编辑脚本听起来不是一个好主意)
缺点:该脚本现在依赖于两个文件,并且要求用户运行安装程序才能创建配置文件。如果不存在,可以通过自动生成配置文件来解决。但是,对于只想下载脚本,进行编辑并完成脚本的用户而言,查找外部配置文件仍然比较麻烦。
另外,关于安装后用户应如何管理配置的一些选项:
像
$ myscript config server.host example.org 这样的Git $ myscript config server.proxypath / home / johndoe / proxy $ myscript config server.httppath / home / johndoe / webInteractive
$ myscript config
输入服务器主机名:example.org
输入服务器上代理
的路径:/ home / johndoe / proxy 输入服务器上http目录的路径:/ home / johndoe / web带有长选项的getopts
$ myscript --host example.org --proxypath / home / johndoe / proxy --httppath / home / johndoe / web简单的
$ myscript配置example.org / home / johndoe / proxy / home / johndoe / web
您还有其他方法可以考虑吗?
有什么最佳做法,有什么优雅的做法?