Shell Scripting和其他语言

时间:2011-05-06 08:55:40

标签: shell scripting

我感兴趣的是对您的看法,Shell Scripting与其他脚本语言相比具有多大的竞争力?

例如,Shell脚本为python或perl或ruby或R等提供了什么样的好处......

从Shell Scripting极客那里了解Shell Scripting的优势会很有趣...... :)

没有攻击,我是shell脚本的新手,想要了解shell相对于其他脚本语言的实际优势..

提前谢谢

4 个答案:

答案 0 :(得分:2)

Shell脚本非常擅长调用程序。他们还以很多方式为stdin,stdout和stderr重定向,并且非常善于对所调用的程序返回的错误代码做出反应。如果您对使用$1等参数感到满意,函数定义通常非常有用。

没有其他语言无法做到,但语法只是进行了优化,使这些事情变得非常简单。

虽然shell脚本(特别是对于可正确编写脚本的shell,例如bash或zsh,当然不是csh或tcsh)确实提供了许多其他有用的东西,并允许写几乎任何东西(我认识的学生认为数字的任务是对他来说太简单了,所以他把他的代码写成了一个bash脚本......当然工作正常),语法根本就没有优化,你通常必须编写奇怪的行噪声甚至将n增加1

总之,我会将shell脚本用于任何超过80%调用外部程序的东西,以及其他任何涉及更多逻辑和“经典编程”的脚本任务的东西(通常是ruby)。

答案 1 :(得分:2)

贝壳的优势:

  • 管道,过滤器和重定向,以便轻松利用其他程序/实用程序的综合功能
  • 轻松显示和更改导出的环境变量 - 以及影响的OS限制 - 您调用的程序
  • 功能强大且可编程的命令完成功能不仅可以识别内置命令,还可以识别目录,文件和其他程序及其命令行选项(至少在良好的shell中 - zsh,bash ......)
  • 作业控制功能在后台运行多个作业,等待完成
  • filename globbing允许对匹配文件集进行简单操作
  • 非常简洁/简洁,相当强大的对环境变量进行临时调整(将它们拆分为单词,删除/替换子串,占用目录路径的头部或尾部......),如果花费不幸,通常难以记住你的大部分时间都花在shell脚本以外的东西上......

哪些贝壳往往不那么好:

  • 调用用其他语言编写的库例程(尽管许多可以编译成实用程序)
  • 用户定义的结构化数据类型和容器(哈希表,链表,树)
  • 类型安全
  • 性能

答案 2 :(得分:1)

在我看来,shell脚本中的管道和过滤器系统可以让你很容易地为shell编写有用的单行程序。通常,您还可以使用许多简短的方法与典型的shell任务进行交互,例如检查文件存在,迭代文件等。在更通用的脚本语言中,您可能需要更多代码来完成这些任务。 但是,您可以在其他语言中执行更多操作,例如GUI编程,您可以获得正确的面向对象,继承等。 IMO它是用于不同方面的两个工具,它们具有一些共同的用例。 Shell脚本语言将允许shell任务的自动化或用于与文件,套接字,进程等直接交互的小脚本。脚本语言在不同的事物上更通用或专门(例如R专门用于计算和表示统计问题)。 / p>

答案 3 :(得分:0)

所有shell都是不同的,所以这必须用一点点盐,但是一些更好的shell脚本环境和你提到的一些语言(例如perl和ruby)之间没有太大区别。特别是在编写批处理脚本时。

但是对于日常的repl使用,shell环境将更紧密地耦合到您的文件系统,包括将您链接到文件系统中的某个位置。这将是主要优势。