我已经做了很多研究,但是这些信息有些不知所措,我不确定我是否需要在需要采取的步骤中获取正确的信息。
只是一些基本问题,要开始我:
我已经阅读了一些教程,并设法编写了我自己的小脚本,但是我注意到每个人的脚本中的事情都不一样,这使我感到困惑。
由于我真的不知道如何问这些问题,或者我应该问他们哪个顺序,我将卸载一些。
我怎么知道何时需要将.sh
附加到文件上?为什么有些脚本与#!/bin/bash
相同,但其中一些脚本已将.sh
附加到文件上,而有些则不呢?
我想我还有很多问题,但是首先,大的是我刚刚问的两个问题。我只是对我应该如何感到困惑..."声明"我的shell脚本。
感谢您的帮助。
我怎么知道何时需要将.sh附加到文件?
文件扩展名只是您的标志,也许是其他一些"聪明"程序,指示其中有哪种内容。这不是必需的。
为什么某些脚本与#!/bin/bash中的相同,但是其中一些脚本已添加到文件上,有些则不在文件上?
shebang在文件中 X.sh
允许它像 $> ./X.sh
一样可执行。
和一些建议:采取一些随机问题或任务,也许并不是真的有用,并尝试使用bash
解决它。这两个家伙可以为您提供很多帮助。
-
.sh
是可选的(例如,文本文件并非总是具有.txt
扩展名)。它确实允许用户将其识别为外壳脚本。 -
#!/bin/bash
称为" Shebang"(或" Hashbang")。Wikipedia上有一个相当不错的条目。Shebang仅在执行脚本时才使用。它指定执行脚本时要使用哪些解释器。没有Shebang,默认外壳用于解释脚本。
如果您的Shebang是
#!/bin/bash
,并且您像./script.sh
一样执行脚本,则等同于在控制台中键入此内容:/bin/bash ./script.sh
要使您的脚本可执行,您需要
chmod +x script.sh
Shebang的演示('脚本'打印自身的前五行)
使用此内容创建文件
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
chmod +x printmeself
./printmeself
???
利润
-
.sh
只是一个约定,它可以帮助用户知道它是否是shell脚本,甚至没有打开文件。Shell脚本必须具有此约定,这不是强制性的。但是,建议使用它。 -
#!/bin/bash
是写在文件开头的魔术线,该线告诉必须执行脚本哪个shell。对于不同的外壳,语法不同。因此,当您编写shell脚本时,建议指定您希望使用此脚本执行此脚本的外壳。如果未指定,内核将决定可以是Bourne Shell或与登录外壳相同的外壳。