我做了很多研究,但信息有点压倒性,我不确定我是否正在接受我需要采取的步骤中的正确信息。
启动我的一些基本问题:
我已经阅读了一些教程,并设法写了一个我自己的小脚本,但我注意到每个人的脚本中有不同的东西让我感到困惑。
由于我真的不知道如何提出这些问题或者我应该问他们的顺序,我只会卸载一些。
我如何知道何时需要将.sh
附加到文件中?
为什么有些脚本与#!/bin/bash
中的脚本相同,但有些脚本的.sh
附加到文件中,有些脚本没有?{/ p>
我想我还有很多问题,但首先,大问题是我刚问过的两个问题。我只是对我应该如何......“声明”我的shell脚本感到困惑。
感谢您的帮助。
答案 0 :(得分:3)
我如何知道何时需要将.sh附加到文件中?
文件扩展名只是您的标志,也许还有其他一些“聪明”的程序,指示其中包含哪种内容。没有必要。
文件为什么有些脚本会像#!/ bin / bash一样开始,但是有些脚本会在文件中附加.sh而有些脚本没有?
X.sh
内的 Shebang允许它像$> ./X.sh
一样可执行。
并提出一些建议:采取一些随机问题或任务,可能不是很有用,并尝试使用bash
来解决它。这些two guys可以为您提供很多帮助。
答案 1 :(得分:2)
.sh
是可选的(就像文本文件的扩展名不一样.txt
)。它允许用户将其标识为shell脚本。
#!/bin/bash
被称为'shebang'(或'hashbang')。维基百科上有一个相当不错的entry。
仅在执行脚本时使用Shebang。它指定在执行脚本时使用哪个解释器。没有shebang,默认shell用于解释脚本。
如果您的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
???
利润
答案 2 :(得分:0)
.sh
只是一个约定,可帮助用户在不打开文件的情况下知道它是否是shell脚本。对于具有此约定的shell脚本,它不是强制性的。但是,建议使用它。#!/bin/bash
是写入文件开头的魔术行,它告诉脚本必须在哪个shell中执行。不同shell的语法不同。因此,当您编写shell脚本时,建议您指定要执行此脚本的shell。如果未指定,内核将决定shell,它可以是bourne shell,也可以是登录shell。