第一个Shell程序
Shell脚本中提供了变量、数组、函数、流程控制等功能,使用户可以直接以Shell而非C语言等编程语言来编写程序。下面我们先通过一个简单的Shell程序,来认识Shell编程。
与C语言等编程语言一样,我们需要选择一种编辑器,本书主要使用第二章中学习过的vi编辑器,来编辑所需的程序。
首先,使用vi编辑器创建一个名为first的文件;其次,在插入模式下,向first文件中输入以下内容并保存退出:
#!/bin/sh
#定义一个变量并初始化
data="first shell script"
#输出变量data
echo "data is:"
echo $data
exit 0
至此,一个简单的脚本文件就编辑好了。
执行该脚本的方法有两种:一种是将脚本本身作为一个可执行文件,若想执行该脚本程序,需要确保该文件可执行。但创建的文件一般默认没有可执行权限,因此需要使用第二章中学习的“chmod”命令,来修改文件的权限:
[itheima@localhost ~]$ chmod +x first
修改文件权限之后,便可以执行脚本文件了,执行该文件的方式如下所示:
[itheima@localhost ~]$ ./first
第二种方法是将该脚本文件作为一个参数,通过Shell解释器对其进行解析。具体方法如下所示:
[itheima@localhost ~]$ sh first
使用以上两种方法执行first脚本文件后,执行结果将被打印到终端中。first脚本的执行结果如下所示:
data is:
first shell script
下面对该脚本文件中的内容进行分析。
Shell中以“#”开头的行一般为注释行,类似于C语言中的“//”,如脚本中的第二行和第四行,但第一行是例外。第一行的“#!/bin/sh”是一种特殊的注释,“#!”后的参数表明了系统将会调用哪个程序来执行该脚本。在本例中,/bin/sh是默认的Shell程序。
脚本的第三行定义了一个变量data,并对该变量进行了初始化。
脚本的第五行的“echo”是一个输出方法,类似于C语言中的printf()函数,原样输出由一对双引号括起来的内容。
脚本的第六行同样是“echo”,输出的内容为data变量的值,符号“$”表示对变量的引用。
脚本的最后一行是exit命令,其作用是确保该脚本程序能够返回一个有意义的退出码。就本程序而言,此行代码没有太大意义,但当该脚本被别的脚本程序调用时,可以通过检查其退出码来确认该脚本程序是否成功执行,所以保留该行代码是一个良好的习惯。