我决定用我的第一个Python项目重写Python中的所有Bash脚本(没有那么多)。之所以如此,虽然Bash非常流利,但我觉得这是一种古老的语言,因为我们的系统处于开发的第一阶段,我认为现在切换到Python是正确的。
是否应该始终用Bash编写脚本?例如,我们有一个init.d守护程序脚本 - 可以使用Python吗? 我们运行CentOS。
感谢。
答案 0 :(得分:3)
从某种意义上说,你可以做到这一点。但是/etc/init.d
中的脚本通常需要加载配置数据和一些函数(例如在控制台上打印漂亮的绿色OK
),这很难在Python中模拟。
因此,尝试转换那些有意义的(即包含复杂逻辑的那些)。如果你需要作业控制(启动/停止进程),那么bash比Python更适合。
答案 1 :(得分:2)
通常,/ etc / init.d中的脚本是在OS的“native shell”中编写的(例如bash,sh,posix-sh等)。对于将在较低初始级别运行的脚本尤其如此(例如,并非每个目录都将以单用户模式安装,包括可能安装python或站点库的地方)。
大多数操作系统提供了一些“辅助函数”,这使得在一些本机shell中编写脚本变得更容易。这些脚本定义了编写服务脚本时所需/需要的某些返回代码和消息。在基于RedHat的系统上,请参阅:
/etc/init.d/functions
除此之外,/ etc / init.d中的服务脚本可以用任何语言(包括编译语言)编写。需要支持通用调用语法。通常,应支持三个参数:start,stop和status。根据脚本的用途,一些其他参数可能是合适的。
% /etc/init.d/foo (start|stop|status)
答案 2 :(得分:1)
每个任务都有更适合它的语言,而不是那么。取代sh
的反引号引用在Python中是相当笨重的,因为无数的引用细节,只是为了说出一对。可能有更好的项目来削减你的牙齿。
他们上面提到的关于Python的所有内容都是相对重量级的,并且在需要时不一定可用。
答案 3 :(得分:0)
我编写的某些脚本只涉及在某些目录中循环遍历glob,然后在它们上执行一些管道系列命令。在python中,这种事情更加乏味。