- 细说Linux系统管理(第2版)
- 沈超编著
- 1551字
- 2021-01-05 18:33:26
2.2 Shell 脚本的运行方式
2.2.1 输出命令echo
一般学习一种编程语言,编写的第一个脚本都是打印“Hello world!”。我们也编写一个“Hello world!”脚本,用来学习Shell 脚本的运行方式。不过,在编写脚本之前,需要学习Linux系统的输出命令echo。命令格式如下:
其实echo 命令非常简单,如果命令的输出内容没有特殊含义,则原内容打印到屏幕上;如果命令的输出内容有特殊含义,则打印其含义到屏幕上。
注意:在!和"之间要有空格,否则会报错。
在echo 命令中如果使用了“-e”选项,则可以支持控制字符,如表2-2所示。
表2-2 控制字符
举几个例子来说明一下“-e”选项。
在这个例子中,echo 命令会输出“\”。如果不像“\\”这样写,那么因为“\”有特殊含义,所以不会输出。如果想要听到警告音,那么记得不能用远程工具输入,需要在虚拟机或服务器本机上输入,并且开启声音。
也就是说,141这个八进制数在ASCII 码表中代表小写的“a”,其他的以此类推。
echo 命令还可以输出一些比较有意思的内容。
这条命令会把abcd 按照红色输出。解释一下这条命令:\e[1是标准格式,代表颜色输出开始,\e[0m 代表颜色输出结束,31m 用于定义字体颜色为红色。echo 命令能够识别的颜色如下:30m=黑色,31m=红色,32m=绿色,33m=黄色,34m=蓝色,35m=洋红,36m=青色,37m=白色。
这条命令会给abcd 加入一个绿色的背景。echo 命令可以使用的背景颜色如下:40m=黑色,41m=红色,42m=绿色,43m=黄色,44m=蓝色,45m=洋红,46m=青色,47m=白色。
2.2.2 Shell 脚本的运行
1.第一个Shell 脚本
做什么事情都会有第一次,我们学习语言的第一次就是编写著名的“Hello world!”程序。命令如下:
大家发现了吗?在Shell 脚本中是可以直接使用echo 命令的。其实不止echo 命令,所有的Linux 系统命令都可以直接在Shell 脚本中被调用。这种特性使得Shell 脚本和Linux 系统结合得更加紧密,也更加方便了Shell 脚本的编写。
解释一下这个脚本。
● 第一行“#!/bin/bash”。
在Linux 系统中,以“#”开头的语句一般是注释,不过这句话是例外的。这句话的作用是标称以下编写的脚本使用的是Bash 语法。只要编写的是基于Bash 的Shell 脚本,都应该这样开头。这就像在HTML 语言中嵌入PHP 程序时,PHP 程序必须用<? ?>包含起来。
不过,有一些比较喜欢钻研的人也会有疑问,他们在编写Shell 脚本时,不加“#!/bin/bash”这句话,Shell 脚本也可以正常运行。那是因为我们的脚本是在默认Shell 就是Bash 的Linux系统中编写的,而且只有纯Bash 脚本才能够正常运行。如果把脚本放在默认Shell 不是Bash的Linux 系统中运行,或者编写的脚本不是纯Bash 语言,而嵌入了其他语言(如expect 语言)的,那么这个脚本就不能正常运行了。所以,大家还是要记住,我们的Shell 脚本必须以“#!/bin/bash”语句开头。
● 第二行与第三行。
在Shell 脚本中,除“#!/bin/bash”这行外,其他行只要是以“#”开头的都是注释。第二行和第三行就是我们这个脚本的注释。建议大家在编写程序时加入清晰而详尽的注释,这是在建立良好的编程规范时应该注意的问题。
● 第四行就是程序的主体了。
既然echo 命令可以直接打印“Mr. She Chao is a good man!”,那么,将这句话放入Shell脚本中也是可以正确执行的,因为Linux 系统命令是可以直接在脚本中执行的。
2.运行方式
Shell 脚本编写好了,该如何运行呢?在Linux 系统中,脚本的运行主要有两种方式。
● 赋予执行权限,直接运行。
这是最常用的Shell 脚本运行方式,也最为直接、简单。就是在赋予脚本执行权限之后,直接运行。当然,在运行时既可以使用绝对路径,也可以使用相对路径。命令如下:
Shell 脚本是否可以像Linux 系统命令一样,不用指定路径,直接运行呢?当然是可以的,不过需要进行环境变量的配置。在这里大家只需要知道,我们自己编写的Shell 脚本默认是不能直接运行的,要么使用绝对路径,要么使用相对路径。
● 通过Bash 调用运行脚本。
这种方式也非常简单,命令如下:
这种方式的意思是直接使用Bash 去解释脚本中的内容,所以这个脚本也可以正常运行。使用这种方式运行脚本,甚至不需要脚本拥有执行权限,只要拥有读权限就可以了。
这两种Shell 脚本的运行方式,大家可以按照个人习惯随意使用。