Linux Shell 脚本:什么是 Shell? 0 个改进

外壳程序(Shell) 为你提供与 Unix 操作系统的交互接口。它收集来自你的输入并解释输入并执行,当执行完成后,显示执行输出结果。

运行的外壳程序 是一个运行环境,你可以在其中执行命令,运行程序或外壳脚本等。有许多不同风格的外壳程序,正如有不同风格的操作系统一样。每种不同的外壳程序有它自有的命令和函数集。

外壳程序提示符

提示符 $, 它被称作命令行提示符(command prompt),由外壳程序发布。当在外壳程序中显示出提示符时,你就可以键入命令去执行。

当输入命令后,键入回车(Enter) 键,外壳程序读入输入内容,并根据输入的第一个单词决定你要执行的操作命令。一个单词是无间隔符分隔的一串字符串,间隔分隔符是空格(space)或制表符(tab)。

下面是简单的 'date' 命令的例示,它显示当前系统日期和时间。

$ date
Thu Jun 25 08:30:19 MST 2009

你可以通过系统环境变量 'PS1' 来用户化,自定义外壳程序提示符。详细解释见之后的指南内容。

外壳程序的类型

Unix 系统中,有2种主要的外壳程序类型 −

  • Bourne shell − 若你使用 Bourne 类的外壳程序,$ 字符是默认的提示符。

  • C shell − 若你使用 C-type 类的外壳程序,% 字符是默认的提示符。

Bourne 类外壳程序有如下一些子类 −

  • Bourne shell (sh)
  • Korn shell (ksh)
  • Bourne Again shell (bash)
  • POSIX shell (sh)

不同的 C-type 类外壳程序有如下分类 −

  • C shell (csh)
  • TENEX/TOPS C shell (tcsh)

最初的 Unix 外壳程序由 Stephen R. Bourne 在 1970 年代中期编写,当时他在位于新泽西州的 AT&T 贝尔实验室( AT&T Bell Labs)工作。

Bourne 外壳程序是 Unix 类操作系统出现的第一个外壳程序,因此它就被称作 「the shell」。

在许多的类 Unix 系统中,Bourne 外壳程序通常为 /bin/sh 执行文件,这也是在不同版本的类 Unix 操作系统中,被做为外壳脚本首选的外壳解释程序的原因。

在之后的章节中,我们将基于 Borne Shell 外壳程序的特性讲解大多数外壳程序的概念。

外壳脚本

外壳脚本的基本概念就是一系列外壳执行命令的序列。以它们的执行顺序罗列。设计良好的外壳脚本应包含一些注释(以 # 符标记),注释描述出设计者意图或执行逻辑。

也包含条件测试元素,如判断 A 值是否大于 B 值等。循环结构可使我们处理包含大量数据的集合。文件的读写,变量的赋值与读取等。脚本也可以包含自己的函数。

在后面的章节,我们将编写许多外壳脚本。外壳脚本被写入到一个简单的文本文件中。文件中不仅包含程序需要执行的命令,也包含一些外壳脚本运行的环境定义,它们定义外壳脚本做什么和何时做的设置。

外壳脚本及其中的函数定义都是解释执行的。这意味着外壳脚本不是编译的。

外壳脚本实例

假定我们创建一个文件名为 test.sh 的外壳脚本文件。注意,外壳脚本文件不要求必须有 .sh 文件后缀名。在向外壳脚本中添加任何命令前,应该先告知系统以下内容是外壳脚本,这通过 shebang 构建命令完成。举例如下 −

#!/bin/sh

这告诉系统,之后的文件内容是可执行的外壳脚本,并指出由 Bourne shell 外壳程序进行解释执行。它被称做 shebang 是因为 # 符被称作 hash ,而 ! 符被称作 bang 。

创建一个外壳脚本包含这些内容,文件首行是 shebang 命令行,然后是执行的命令序列 −

#!/bin/bash
pwd
ls

外壳脚本注释

你可用以下方式表示外壳脚本的注释 −

#!/bin/bash

# Author : Zara Ali
# Copyright (c) Tutorialspoint.com
# Script follows here:
pwd
ls

保存以上内容到文件,并使文件可执行 −

$chmod +x test.sh

外壳脚本文件现在准备好被调用执行 −

$./test.sh

上面脚本的执行,你将会收到如下结果输出−

/home/amrood
index.htm  unix-basic_utilities.htm  unix-directories.htm  
test.sh    unix-communication.htm    unix-environment.htm

注意: − 使在当前目录下的脚本程序文件有效执行的命令是 ./program_name

外壳脚本扩展

有多种外壳脚本所需的构建器可供选择,它们告诉外壳程序做什么和何时做,以及环境设置等。当然,许多外壳脚本远比这些更复杂。

外壳脚本,首先它是一种真正的程序语言,完全具备诸如变量、控制结构等等程序语言具备的要素。但是,无论外壳脚本有多复杂,它仍然只是外壳程序可执行命令行的有序序列。

下面的脚本,使用 'read' 命令读取用户键盘输入内容,并将其赋值给一个名为 PERSON 的变量。最后,组合一些字符串内容输出到 标准输出 (STDOUT)。

#!/bin/sh

# Author : Zara Ali
# Copyright (c) Tutorialspoint.com
# Script follows here:

echo "What is your name?"
read PERSON
echo "Hello, $PERSON"

下面是脚本运行的屏幕输出 −

$./test.sh
What is your name?
Zara Ali
Hello, Zara Ali
$
本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!