带你了解Shell脚本编程陷阱
副标题[/!--empirenews.page--]
Shell 脚本很棒,你可以非常轻松地写出有用的东西来。甚至像是下面这个傻瓜式的命令:
如果用其他编程语言,就需要花费更多的脑力,用多行代码实现,比如用 Ruby 的话:
Ruby 版本的代码虽然不是那么长,也并不复杂。但是 shell 版是如此简单,我甚至不用实际测试就可以确保它是正确的。而 Ruby 版的我就没法确定它不会出错了,必须得测试一下。而且它要长一倍,看起来也更复杂。 这就是人们使用 Shell 脚本的原因,它简单却实用。下面是另一个例子:
这个脚本可以从维基百科上获取荷兰基层政权的列表。几年前我写了这个临时的脚本,用来快速生成一个数据库,到现在它仍然可以正常运行,当时写它并没有花费我多少精力。但要用 Ruby 完成同样的功能则会麻烦得多。 现在来说说 shell 的缺点吧。随着代码量的增加,你的脚本会变得越来越难以维护,但你也不会想用别的语言重写一遍,因为你已经在这个 shell 版上花费了很多时间。 我把这种情况称为“Shell 脚本编程陷阱”,这是沉没成本谬论的一种特例(LCTT 译注:“沉没成本谬论”是一个经济学概念,可以简单理解为,对已经投入的成本可能被浪费而念念不忘)。 实际上许多脚本会增长到超出预期的大小,你经常会花费过多的时间来“修复某个 bug”,或者“添加一个小功能”。如此循环往复,让人头大。 如果你从一开始就使用 Python、Ruby 或是其他类似的语言来写这个程序,你可能会在写第一版的时候多花些时间,但以后维护起来就容易很多,bug 也肯定会少很多。 以我的 packman.vim 脚本为例。它起初只包含一个简单的用来遍历所有目录的 出于类似的原因,我很后悔写出了许多这样的 shell 脚本,而我在 2018 年的新年誓言就是不要再犯类似的错误了。 附录:问题汇总需要指出的是,shell 编程的确存在一些实际的限制。下面是一些例子:
反馈 你可以发邮件到 martin@arp242.net,或者在 GitHub 上创建 issue 来向我反馈,提问等。 (编辑:滁州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows – 如何自动更改Ephemeral驱动器的指定字母?
- windows-server-2008 – 如何在powershell脚本中打印出有关
- 笔记本耗电过快?Windows 10自带电池检测了解下
- windows-server-2003 – 如何在本地Windows服务器上获取共享
- windows-server-2008 – Windows模块安装程序延迟登录,服务
- Windows – MongoDB:服务器有启动警告
- 如何在windows 7下设置挂载Linux服务器nfs共享的数据
- Win10系统搜索框如何从底部移动到屏幕顶部
- Win10的错误代码0xc1900130怎么办
- “用户组”在Linux上到底是怎么工作的?