shell 脚本是一种编程语言吗?

MUE*_*MUE 6 linux solaris shell-script

这是我在 UNIX 中的第一个问题:

两天前我开始使用 shell 脚本。

但我有一个问题:shell 脚本是针对特定 shell 的特殊编程语言吗?

Mar*_*ana 6

Bash 是一种scripting语言:

来自维基百科

脚本语言或脚本语言是一种支持编写脚本的编程语言,脚本是为软件环境编写的程序,可以自动执行任务,这些任务也可以由人工操作员逐一执行。[...]

术语脚本通常保留给小程序(最多几千行代码)。

脚本通常很快而且很脏。比如说,一个让你的生活更轻松的 bash 脚本。而“编程”语言意味着更深思熟虑和深思熟虑。“编程”语言的特点是它们通常更快,并且如果您愿意,可以提供对低级事物的更多控制。

“编程”语言通常用于代码将存在很长时间的场景。如果你想快速写出一些东西然后再也不使用它,“脚本”语言就是你想要的。

您可以在此处找到一篇有趣的文章。


Ema*_*erg 4

如果您知道任何命令,例如,ls键入它,然后按回车键,shell 将知道该程序 (ls) 在哪里,调用它并向您显示结果。这是“非脚本”shell 用法。

但是,如果您按顺序订购几个这样的命令,例如 A、B、C、D,然后将其(顺序)放入可执行文件中,您就得到了一个程序。该程序有名称和位置,因此可以引用和调用它;它有代码,因此可以由 CPU 一次执行一个命令。

(该程序没有被编译——例如,C 源代码就是这样——这使它成为一个脚本。但它仍然是一个程序。)

也就是说,在某些方面,此时您已经在编程,因为您正在指示计算机做什么。

此外,您同样在非常基础的层面上使用编程语言,因为您不能只输入任何内容(并期望它能够工作);同时,无论您输入什么内容,您都会从计算机获得与您所写内容完全对应的活动。

说话的方式是有规则的,计算机对这些事情的反应也是有规则的。

也就是说,对于“编程”,您通常会联想到比仅仅将命令堆叠在一起更具表达能力的东西。至少,您需要分支 ( if ... then ... else)、迭代(循环:whilefor等),可能还需要一些其他东西。但这没关系,因为脚本语言具有这些功能以及更多功能。

是的,shell 有不同的语言,但由于约定(为什么要改变说某事的好方法?),或者为了与早期版本(或某些标准)兼容,有些语言可能会在很大程度上重叠。