perl - Shell 脚本和自动化指南

标签 perl shell scripting powershell

我目前正在编写一些脚本,这些脚本可以自动化很多东西,而且大小适中。我已经开始遵循某些事情来使我的脚本具有通用性和可移植性,例如:

  • 调度脚本的管理员登录
  • 使用绝对路径
  • 使用配置文件
  • 开发时使用 write-host,部署(调试)时切换到日志记录

  • 我最想知道是否有任何标准的脚本技术和指南旨在使脚本开发人员的生活变得简单。我在 perl 和 powershell 上工作,因此更普遍的建议将受到欢迎和赞赏。

    感谢您提前提供任何帮助。
    钢铁用户

    最佳答案

    这有点宽泛,我敢肯定。但是,我已经完成了一些脚本工作,并且可以提供一些我从经验中学到的东西。

  • 使您的脚本数据驱动。硬编码尽可能少的东西。路径、资源位置等所有内容都应该可以从配置文件中更改,而不是通过编辑主脚本。这与您关于绝对路径的观点有关。对所有路径进行硬编码是不行的。让一切都变得相对会带来太多的限制。最好有一个名为 DATA_ROOT 的变量。您可以对其进行修改,然后让所有例程都引用 ${DATA_ROOT}/resources/images 之类的内容等等。${PROGRAM_ROOT} 也很有用,这样您就可以安装多个套件来测试等。
  • 错误检查。脚本语言通常是动态类型的,因此请确保检查您所做的每件事的返回值。甚至可以创建一个库,您可以使用它来执行诸如 call_safely(fn, arg0, arg1,.. ) 之类的操作。和 call_and_abort_on_failure(fn, arg0, arg1,...) .
  • 自由地评论和记录。脚本更容易修改已编译的程序,因此当人们想要扩展它们时,它们经常以错误的方式修补。确保你的 API 有很好的文档记录,这样当人们想要添加一个新的命令行选项时,他们知道如何去做,而不是在你的上面写一个包装脚本。
  • 如果需要,让一个脚本做一件事并编写聚合器。具有 if(FLAG) {do_something} else {do_something_completely_different} 的脚本将会杀死你。让你的脚本做一件事并做好,如果你愿意,你可以编写包装器,根据需要委托(delegate)给这些脚本(以获得更好的用户体验)。
  • 自由地使用第 3 方工具,而不是自己发明。命令行解析、文本处理等都是老领域,有很多库做得很好。使用那些而不是重新实现。最没有错误的程序是从未编写过的程序。
  • 使您的日志记录和测试框架坚如磐石。当坏事发生时,您应该知道一切,而无需重新运行脚本。从一开始就使用一些标准的日志框架,并使其可以从可以按需重新加载的文件中进行配置。确保您的代码经过单元测试,以便在进行新更改时不会引入回归错误。此外,记录计时指标,以便随着时间的推移了解脚本在哪里变慢。将来会有用。
  • 尽可能让您的脚本免于修补。这很难描述,但我可以举个例子。我有一些脚本来跟踪各种分支的构建的各种指标并将它们放入目录中。我写它是为了如果你想要一个分支 foo跟踪,您所要做的就是创建一个名为 foo 的目录在某个地方,它会跟踪它。您不必修补很多东西,真正想要跟踪指标的经理可以根据需要创建目录。

  • 这些是我能想到的点。

    关于perl - Shell 脚本和自动化指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5879323/

    相关文章:

    regex - 使用 awk 从字符串中提取子字符串

    python - 使用 Perl/Batch/Python 更新 MS Word 文档的详细信息 "content status"

    perl - 遍历复杂的数据结构

    bash - ffmpeg 命令在 python 中使用时出错

    shell - 提取 .tar 文件不起作用

    ajax - 使用 AJAX/Jquery 从 SQL Server 2008 检索和更新数据

    Javascript: "Cancelling"动态脚本标签?

    linux - 如何在 Linux 中用新行替换 Pipe?

    perl - 脚本不识别全局变量

    Perl - 下一个和重做之间的区别