用bash脚本编写代码值得吗,还是应该使用更高级的编程语言?
我尝试用bash脚本来编写一些任务,但感觉非常不方便,维护起来也很麻烦,找错误的时候特别困难。它的语法让我想起了上世纪60、70年代的编程语言。虽然这个脚本运行得很快。当我用Ruby做同样的任务时,程序就短多了,写起来也简单很多。不过,我在这里看到很多人问关于bash脚本的问题。那到底用bash脚本编程值不值得,还是应该用Ruby、Python或Perl这样的高级编程语言呢?
1 个回答
老实说,我更喜欢用像Ruby、Python或Perl这样的语言,而不是bash脚本(顺便说一下,它们并不是更高级的语言)。我的理由是其他编程语言比bash更灵活。所以,准备好,我们开始吧!
1. 平台兼容性
你正在悠闲地写bash脚本,突然间,整个Unix系统都消失了。(当然,这不太可能,但我还是有我的观点。)你有了bash脚本,但现在你得用Windows 8.1。Windows当然使用批处理文件来执行命令,但你的bash脚本就没用了!你得坐下来,花两个星期重新写一遍!如果你在写程序的时候用的是Python/Ruby/Perl,就不会有这个问题,因为它们是跨平台的。 总结:Python/Ruby/Perl是跨平台的,而bash不是。
2. 灵活性
再次回到你的bash脚本,你突然想起需要给程序添加网络功能。在bash中,你得混合使用curl、grep,可能还要用其他一些工具。而在Python(3.4)中,只需要两行代码就能下载一个网站的html:
import urllib.request
html = urllib.request.urlopen('http://example.com')
在Python中,你根本不需要用到grep、cat、curl,只需两行代码。用bash的话,你可能也不容易做到这一点,更别提其他语言能做的事情了。(比如用Python和Django做一个网站)总结:bash的功能非常有限,除非你用其他语言来编写程序。(那还不如直接用那种语言呢!)
3. 组织结构
在bash中,按我所知,你不能轻易地使用类、分开文件、文件导入,或者写出看起来不像是把Linux内核和Windows 3.1的源代码粘在一起的代码。bash、Python、Ruby和Perl都有函数,但bash函数和其他语言的函数在可读性上差别很大。 BASH:
function hi {
echo $1
}
hi hello
PYTHON:
def hi(message):
print(message)
hi('hello')
再次强调,我不能代表Perl和Ruby,但我相信它们的函数比bash的更容易理解。无论如何,我们来比较这两段代码。两者长度基本相同(我可以轻松移动大括号来缩短),但一个看起来像英语,另一个(可以说)理解起来和大名鼎鼎的C语言一样困难。我要开始唠叨了,所以我就不多说了。总结:bash的结构很混乱,而Python/Ruby/Perl都有自己的结构。
4. 结论
使用bash,你会发现它的难度比C还大,但功能却像打字机一样简单。bash显然在大多数情况下都是浪费时间,应该使用其他替代方案。正如我所展示的,Python的代码就像一本书一样易读且易于输入,而bash则需要非常繁琐的解决方案来完成其他语言一行代码就能做到的事情。我想是时候不再“bash” bash了,直接告诉你我的看法。
5. 总结
(通常)用Python/Ruby/Perl代替Bash!
补充:好吧,当你有非常大的复杂项目时,使用Python/Ruby/Perl。如果你在bash中绝对无法完成某个功能,从其他语言调用bash也是一个不错的选择,这样可以兼顾两者的优点。(虽然在某些情况下可以单独使用bash,但通常不适用于复杂的项目)