初学者到壳牌

时间:2012-11-09 05:42:20

标签: bash shell sh

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

启动我的一些基本问题:

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

由于我真的不知道如何提出这些问题或者我应该问他们的顺序,我只会卸载一些。

我如何知道何时需要将.sh附加到文件中? 为什么有些脚本与#!/bin/bash中的脚本相同,但有些脚本的.sh附加到文件中,有些脚本没有?{/ p>

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

感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

  

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

文件扩展名只是您的标志,也许还有其他一些“聪明”的程序,指示其中包含哪种内容。没有必要。

  

为什么有些脚本会像#!/ bin / bash一样开始,但是有些脚本会在文件中附加.sh而有些脚本没有?

文件X.sh内的

Shebang允许它像$> ./X.sh一样可执行。

并提出一些建议:采取一些随机问题或任务,可能不是很有用,并尝试使用bash来解决它。这些two guys可以为您提供很多帮助。

答案 1 :(得分:2)

  1. .sh是可选的(就像文本文件的扩展名不一样.txt)。它允许用户将其标识为shell脚本。

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

    仅在执行脚本时使用Shebang。它指定在执行脚本时使用哪个解释器。没有shebang,默认shell用于解释脚本。

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

    /bin/bash ./script.sh
    

  3. 要使脚本可执行,您需要

        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. 利润

答案 2 :(得分:0)

  1. .sh只是一个约定,可帮助用户在不打开文件的情况下知道它是否是shell脚本。对于具有此约定的shell脚本,它不是强制性的。但是,建议使用它。
  2. #!/bin/bash是写入文件开头的魔术行,它告诉脚本必须在哪个shell中执行。不同shell的语法不同。因此,当您编写shell脚本时,建议您指定要执行此脚本的shell。如果未指定,内核将决定shell,它可以是bourne shell,也可以是登录shell。