首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Shell初学者

Shell初学者
EN

Stack Overflow用户
提问于 2012-11-09 13:42:20
回答 3查看 198关注 0票数 1

我做了相当多的研究,但信息有点压倒一切,我不确定我在需要采取的步骤中获取了正确的信息。

以下是一些基本的问题:

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

因为我真的不知道如何问这些问题,或者我应该按什么顺序问它们,所以我只会卸载几个。

如何知道何时需要将.sh附加到文件?为什么有些脚本的开头是一样的,比如在#!/bin/bash中,但其中一些脚本在文件中附加了.sh,而另一些则没有?

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

谢谢你的帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-09 13:52:08

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

文件扩展名对你和其他一些“聪明”的程序来说只是一个标志,表明里面有什么类型的内容。这是不必要的。

为什么有些脚本的开头是一样的,比如#!/bin/bash,但是其中一些脚本在文件中附加了.sh,而另一些则没有?

文件X.sh中的Shebang允许它像$> ./X.sh一样是可执行的。

还有一个小建议:随机选择一些可能不是很有用的问题或任务,尝试用bash解决它。这些two guys可以给你很大的帮助。

票数 3
EN

Stack Overflow用户

发布于 2012-11-09 16:19:00

  1. .sh是可选的(就像文本文件并不总是有.txt扩展名一样)。它确实允许用户将其标识为外壳script.
  2. #!/bin/bash,称为“shebang”(或“hashbang”)。维基百科上有一个相当不错的entry

只有在执行脚本时才会使用Shebang。它指定在执行脚本时使用哪个解释器。如果不使用shebang,则使用默认shell来解释脚本。

如果您的shebang是#!/bin/bash,并且您像./script.sh一样执行脚本,那么它等同于在控制台中输入以下内容:

/bin/bash./script.sh

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

代码语言:javascript
复制
    chmod +x script.sh

shebang的演示(“script”,打印自身的前五行)

  1. 使用此内容创建文件printmeself

#!/usr/bin/head -5我将被打印2我将被打印3我将被打印4我不会被打印Bye

  • chmod +x printmeself

  • ./printmeself

  • ???

  • Profit
票数 2
EN

Stack Overflow用户

发布于 2012-11-09 13:53:10

  1. .sh只是一种约定,它可以帮助用户在甚至不打开文件的情况下知道它是否是shell脚本。shell脚本不一定要有这样的约定。但是,建议使用this.
  2. #!/bin/bash是写在文件开头的神奇代码行,它告诉您必须在哪个shell中执行脚本。对于不同的shell,语法是不同的。因此,在编写shell脚本时,建议您指定要用来执行此脚本的shell。如果未指定,内核将决定外壳可以是bourne外壳,也可以是与登录外壳相同的外壳。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13302710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档