我做了相当多的研究,但信息有点压倒一切,我不确定我在需要采取的步骤中获取了正确的信息。
以下是一些基本的问题:
我已经读了一些教程,并设法写了一个我自己的小脚本,但我注意到每个人的脚本中有一些让我困惑的不同之处。
因为我真的不知道如何问这些问题,或者我应该按什么顺序问它们,所以我只会卸载几个。
如何知道何时需要将.sh附加到文件?为什么有些脚本的开头是一样的,比如在#!/bin/bash中,但其中一些脚本在文件中附加了.sh,而另一些则没有?
我想我还有更多的问题,但首先,最重要的是我刚才问的两个问题。我只是困惑于我该如何..。“声明”我的shell脚本。
谢谢你的帮助。
发布于 2012-11-09 13:52:08
我如何知道何时需要将.sh追加到文件中?
文件扩展名对你和其他一些“聪明”的程序来说只是一个标志,表明里面有什么类型的内容。这是不必要的。
为什么有些脚本的开头是一样的,比如#!/bin/bash,但是其中一些脚本在文件中附加了.sh,而另一些则没有?
文件X.sh中的Shebang允许它像$> ./X.sh一样是可执行的。
还有一个小建议:随机选择一些可能不是很有用的问题或任务,尝试用bash解决它。这些two guys可以给你很大的帮助。
发布于 2012-11-09 16:19:00
.sh是可选的(就像文本文件并不总是有.txt扩展名一样)。它确实允许用户将其标识为外壳script.#!/bin/bash,称为“shebang”(或“hashbang”)。维基百科上有一个相当不错的entry。只有在执行脚本时才会使用Shebang。它指定在执行脚本时使用哪个解释器。如果不使用shebang,则使用默认shell来解释脚本。
如果您的shebang是#!/bin/bash,并且您像./script.sh一样执行脚本,那么它等同于在控制台中输入以下内容:
/bin/bash./script.sh
要使您的脚本可执行,您需要
chmod +x script.shshebang的演示(“script”,打印自身的前五行)
printmeself#!/usr/bin/head -5我将被打印2我将被打印3我将被打印4我不会被打印Bye
chmod +x printmeself
./printmeself
发布于 2012-11-09 13:53:10
.sh只是一种约定,它可以帮助用户在甚至不打开文件的情况下知道它是否是shell脚本。shell脚本不一定要有这样的约定。但是,建议使用this.#!/bin/bash是写在文件开头的神奇代码行,它告诉您必须在哪个shell中执行脚本。对于不同的shell,语法是不同的。因此,在编写shell脚本时,建议您指定要用来执行此脚本的shell。如果未指定,内核将决定外壳可以是bourne外壳,也可以是与登录外壳相同的外壳。https://stackoverflow.com/questions/13302710
复制相似问题