Bash Shell 脚本/术语说明
Bash 命令语言是一种图灵完备的编程语言,这意味着如果从理论上讲,某个计算可以完成,那么从理论上讲,它也可以在 Bash 中完成。此外,从实际的角度来看,在 Bash 中可以完成一些非常复杂的事情,而且人们经常这样做。尽管如此,它通常被描述为“shell 脚本语言”(或类似的)而不是“编程语言”,而用它编写的程序通常被称为“Bash shell 脚本”(或类似的)而不是“Bash 程序”。我们将在本文中遵循这种惯例,更倾向于使用脚本来指代 Bash 脚本,而只在指代可能从 Bash 脚本中调用的外部程序时使用程序。
我们还经常使用实用程序这个词。这个词有点主观,用法也不尽相同,但它通常描述一个不需要人工交互的外部程序,并且旨在与其他程序很好地配合使用。所有实用程序都是程序,因此我们将互换使用这些术语。与“实用程序”完全相反的是应用程序;这个词也是主观的,用法也多种多样,但它通常描述一个具有相对复杂的图形用户界面 (GUI) 的外部程序,并且不旨在与其他程序很好地配合使用。由于应用程序本质上一般不会从 Bash 脚本中调用,因此我们使用这个词的机会较少。许多程序既不是“实用程序”也不是“应用程序”,有些程序同时具有实用程序和应用程序的元素。
在 Bash 脚本的各种元素中,有些通常被称为命令,而另一些则通常被称为语句。我们将在本文中遵守这种区别,但你不必过度关注它。通常“命令”是指对外部程序的调用,对类似于外部程序的 Bash 内置命令(例如 echo
)的调用,对 shell 函数(我们将在下面看到)的调用等等。通常“语句”是指 Bash 编程结构(例如 if … then … else … fi
或变量赋值(我们将在稍后看到))的实例。可能令人困惑的是,命令也用来指代任何 Bash 内置命令,即使使用该内置命令会导致“语句”而不是“命令”;例如,“一个 if
语句”是一个使用“if
命令”的语句。如果这种区别似乎过于细致,请不要担心;在上下文中,应该始终能够清楚地理解一个词或另一个词的含义。