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

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

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

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

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

答案1

Bash 是一种scripting语言:

来自维基百科:

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

术语“脚本”通常是为小程序(最多几千行代码)保留的。

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

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

你可以找到一篇有趣的文章这里

答案2

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

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

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

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

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

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

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

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

相关内容