【问题标题】:What is shell scripting?什么是 shell 脚本?
【发布时间】:2010-07-16 14:46:13
【问题描述】:

究竟什么是 shell 脚本?

什么是 Bash、Korn 和 Expect?我在 Linux 终端中使用了一些命令,这也是 shell 脚本吗?我再次对 shell 脚本到底是什么感到困惑?

【问题讨论】:

标签: linux shell scripting


【解决方案1】:

您的终端运行 shell ,可能是 bash - korn、csh 和其他类似的 shell,具有不同的特性和语法。

虽然您可能主要使用它来运行命令,但大多数 shell 是由该 shell 定义的命令语言的解释器。该语言的程序称为 shell 脚本。请参阅 this howto 了解 bash 中的 shell 脚本概述。

【讨论】:

  • 要找出 bash 的路径,我做哪个 bash。但是我怎么知道 Korn 在哪里呢??
  • @sai:你会做which ksh,因为“ksh”是可执行文件的名称。在 Bash 中,我更喜欢 type -a 而不是 which,因为它会显示可能取代可执行文件的别名和函数以及可执行文件存在于路径中的目录中的每个位置。 which 的某些版本不会为您提供那么多信息。
【解决方案2】:

Shell 脚本是创建包含多个 shell 命令(即lscdgrep 等)然后可以执行的文件的过程。

bash 和 korn 都是 shell - 它们允许您通过命令行与计算机交互,而不是通过单击图标来运行程序。

shell 脚本的目的是自动执行重复性任务,例如设置环境以启动程序,或检查日志文件是否已更改,或归档目录(或目录集)或任何其他数量的任务.

查看this out了解更多信息。

【讨论】:

  • “shell 脚本的目的是自动执行重复性任务”,哦,你可以做的远不止这些。这就是unix设计的美妙之处。 128.10.19.20/research/technical_reports/1981/TR%2081-379.pdf
  • "任何其他数量的任务" ;) 我想我可以说“任何你想要的”,因为大多数(所有?)shell 语言都是图灵完备的......
【解决方案3】:

http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=define:+shell+script

Shell 脚本可让您自动执行从命令行执行的任务。

【讨论】:

    【解决方案4】:

    shell 脚本是为操作系统的 shell 或命令行解释器编写的脚本。它通常被认为是一种简单的特定领域的编程语言。 shell 脚本执行的典型操作包括文件操作、程序执行和打印文本。

    许多 shell 脚本解释器兼作命令行界面,例如各种 Unix shell、Windows PowerShell 或 MS-DOS COMMAND.COM。其他的,例如 AppleScript 或图形 Windows 脚本宿主 (WScript.exe),将脚本功能添加到计算环境中,而无需命令行界面。主要用于 shell 脚本的其他编程语言示例包括 DCL 和 JCL。

    【讨论】:

    • 另外,“脚本”通常意味着一种解释性语言。这就是为什么有时您会看到对 Python 或 Perl“脚本”的引用,即使它们不是 shell(就像 AppleScript 和 WSH 不是一样)。
    【解决方案5】:

    除了作为交互环境之外,shell(无论是原始的 Bourne shell (/bin/sh) 还是具有不同或扩展语法的众多替代方案之一(ksh、csh、bash、zsh、tcsh...) ) 提供类似编程语言的功能(循环、条件、函数、变量...)。

    Shell 脚本或多或少是在你最喜欢的 shell 中编写程序

    使用 shell 和编写脚本之间的界限很模糊,但我会把它放在“通过编写一些在某种程度上智能的 shell 代码来解决一类问题”附近。

    【讨论】:

    • 我不认为这条线是模糊的。虽然编写复杂的命令行是一个类似的活动,但以交互方式向 shell 发送命令不是脚本,而将它们写入文件是。
    • @William:它确实会变得模糊,因为您可以在命令行上使用管道、循环和条件。存在于文件中的条件是否是构成“脚本”的无条件必要条件是语义论点。
    【解决方案6】:

    shell 允许您创建一个或多个管道 进程。

    管道和过滤器主题的一个标志 - 将工具组合在一起 - 这些工具是过滤器 - 例如。 ls、egrep、paste、bc、wc...您也可以创建自己的过滤器/工具 - 并将它们组合起来。

    shell 定义了使用 pipes 组合过滤器的语法。它还为您提供了一种通过 if 关键字 测试条件并编写循环的方法。您也可以编写函数。

    简而言之,您可以编写程序 - 使用最常见的工具 - 并创建非常强大的定制功能以满足您的需求 - 非常快速。这就是脚本 - 以富有成效的方式将现有工具组合和重用为 脚本

    以管道为例
    % seq 100 | paste -s -d '*'
    1*2*3*4*5*6*7*8*9*10...98*99*100

    编写 seq 过滤器的人不会想象 seq 会像上面那样使用。 seq 程序本身很简单。这种任意连接 seqpaste(或其他过滤工具)的能力 - 使它成为一个非常强大的概念。

    以管道为例
    % seq 100 | paste -s -d '*' | bc
    93326215443944152681699...
    它接受表达式(如上) - 并将其提供给 bc - 另一个过滤器 - bc 计算乘法表达式。

    简而言之,shell 脚本 允许您组合/重用 现有工具 - 使用 if、while... 等流控制机制来创建非常强大的 程序在很短的时间内。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-17
      • 1970-01-01
      • 1970-01-01
      • 2017-06-22
      • 2011-01-20
      • 2013-04-08
      • 2010-12-25
      • 1970-01-01
      相关资源
      最近更新 更多