1

我已经做了很多研究,但是信息有点压倒性,我不确定我在需要采取的步骤中是否获取了正确的信息。

只是一些基本的问题让我开始:

我已经阅读了一些教程并设法编写了自己的小脚本,但我注意到每个人的脚本中都有不同的东西让我感到困惑。

由于我真的不知道如何问这些问题,也不知道应该按什么顺序问它们,所以我就卸载一些。

我如何知道何时需要附加.sh到文件?为什么有些脚本的开头与 中相同,#!/bin/bash但其中一些已.sh附加到文件中而有些则没有?

我想我还有很多问题,但首先,最重要的是我刚刚问的两个问题。我只是对我应该如何...“声明”我的 shell 脚本感到困惑。

谢谢你的帮助。

4

3 回答 3

3

我如何知道何时需要将 .sh 附加到文件中?

文件扩展名对您来说只是一个标志,也许还有其他一些“聪明”的程序来指示它里面有什么样的内容。没有必要。

为什么有些脚本的开头与 #!/bin/bash 相同,但有些脚本在文件中附加了 .sh 而有些则没有?

Shebang inside 文件X.sh允许它像$> ./X.sh.

还有一个小建议:做一些随机的问题或任务,可能不是真的有用,并尝试用bash. 这两个 家伙可以帮助你很多。

于 2012-11-09T05:52:08.357 回答
2
  1. .sh是可选的(比如文本文件并不总是有.txt扩展名)。它确实允许用户将其识别为 shell 脚本。

  2. #!/bin/bash被称为“shebang”(或“hashbang”)。维基百科上有一个相当不错的条目

    Shebang 仅在您执行脚本时使用。它指定执行脚本时要使用的解释器。如果没有 shebang,则使用默认 shell 来解释脚本。

    如果您的 shebang 是#!/bin/bash,并且您执行脚本./script.sh,则相当于在控制台中键入:

    /bin/bash ./script.sh
    

要使您的脚本可执行,您需要

    chmod +x script.sh

shebang 演示(打印前五行的“脚本”)

  1. 创建一个printmeself包含此内容的文件

    #!/usr/bin/head -5
    I will be printed
    I will be printed 2
    I will be printed 3
    I will be printed 4
    I won't be printed
    Bye
    
  2. chmod +x printmeself

  3. ./printmeself

  4. ???

  5. 利润

于 2012-11-09T08:18:59.913 回答
0
  1. .sh只是一个约定,它可以帮助用户在不打开文件的情况下知道它是否是一个 shell 脚本。对于 shell 脚本来说,有这个约定并不是必须的。但是,建议使用它。
  2. #!/bin/bash是写入文件开头的魔法线,它告诉脚本必须在哪个 shell 中执行。不同的 shell 的语法是不同的。因此,当您编写一个 shell 脚本时,建议指定您希望执行此脚本的 shell。如果未指定,内核将决定哪个 shell 可以是 bourne shell 或与登录 shell 相同。
于 2012-11-09T05:53:09.573 回答