代码之家  ›  专栏  ›  技术社区  ›  Jason R. Mick

Bash脚本v.Python脚本的优点Shell命令重实用程序[关闭]

  •  6
  • Jason R. Mick  · 技术社区  · 14 年前

    1. 监视可由shell命令访问的排队系统。
    2. 使用内联文本编辑、cp/mv、命令行脚本和编译的c++程序从模板创建目录。
    3. 检查错误情况。

    注意:2D数组对我的程序有一定的帮助,但我目前正在使用几个1D数组(由于Bash脚本数组的限制)。

    这些任务看起来都有点“shell繁重”,因为它可以很容易地用一堆shell命令来实现,所以我认为Bash脚本将是一种自然的方式。到目前为止,我的结果还不错,但在我开始重构和完成代码之前,我想知道是否最好将其移植到Python。我在很多地方读到过Python比bash“优越”。我已经编写了一些Python脚本,据我所知,这是因为它有更多的内置库,并且支持面向对象编程。但是,我看到的所有脚本都使用shell命令,例如: http://magazine.redhat.com/2008/02/07/python-for-bash-scripters-a-well-kept-secret/

    实现讨厌的语法,比如必须将命令定义为变量,比如:

    #You could add another bash command here
    #HOLDING_SPOT="""fake_command"""
    
    #Determines Home Directory Usage in Gigs
    HOMEDIR_USAGE = """
    du -sh $HOME | cut -f1
    """
    
    #Determines IP Address
    IPADDR = """
    /sbin/ifconfig -a | awk '/(cast)/ { print $2 }' | cut -d':' -f2 | head -1
    """
    

    我只是在装傻,还是这看起来没那么直观?在shell脚本命令方面,Python的速度优势是否会超过Bash的简单优势?或者bash的语法(没有2D数组,大括号/圆括号复杂)是跳转到Python的原因吗?

    3 回复  |  直到 14 年前
        1
  •  7
  •   sashoalm Yaser Kalali    11 年前

    我开始切换python,因为我的一些脚本需要一些模板化过程,这比shell脚本更容易实现。

    但是,如果您可以在bash中快速而清晰地勾勒出您的脚本,而不需要另一个工具,那么请继续使用bash,它是一个很棒的工具。

        2
  •  3
  •   Tom Anderson    14 年前

    在不了解问题细节的情况下,很难建议您使用哪种方法,或者如何同时使用这两种方法。但从它的声音,这是我会做的事情完全在shell脚本。我会找到一种不用数组的方法,关键是停止C++中的思考,开始思考。

        3
  •  3
  •   kindall    10 年前

    这真的取决于你想做什么,但这里有一些一般的区别。

    shell(包括bash)希望将所有变量视为字符串,并通过简单的文本替换来访问变量值。有时这很方便;有时不太方便。

    在shell脚本中,您倾向于通过各种实用程序来处理数据。有时这很方便;有时不太方便。

    Python具有非常好的字符串操作,因此如果您正在大量使用文本文件,那么在Python中使用它可以更快(无论是编写还是运行),而不是找出您想要的sed或awk咒语。

    有些项目采用面向对象的方法,Python很容易支持这种方法,而bash。。。没那么多。Python还支持一些函数技术,这些技术对于某些项目非常方便,而bash。。。你明白了。

    简而言之,shell的脚本语言旨在成为将各种单一功能实用程序捆绑在一起的粘合剂,并提供一些便利使之更容易实现,而Python是一种健壮的编程语言,如果您愿意,可以在其中构建完整的GUI或Web应用程序。

    如果您熟悉并喜欢shell脚本,那么Perl可能更容易升级,因为它最初是用来取代shell脚本(和sed/awk)。