Shell脚本格式及运行方式详解

做什么事情都会有第一次,我们学习语言的第一次就是写著名的"Hello world!"程序。命令如下:

[root@localhost ~]# mkdir sh
[root@localhost ~]# cd sh
#建立Shell练习目录
[root@localhost sh]#vi hello.sh
#The first program
#!/bin/bash
echo -e "www.xinbaoku.com"

大家发现了吗?在 Shell 脚本中是可以直接使用 echo 命令的。其实不止 echo 命令,所有的 Linux 命令都可以直接在 Shell 脚本中调用。这种特性使得 Shell 脚本和 Linux 系统结合得更加紧密,也更加方便了 Shell 脚本的编写。

下面给大家解释一下这个脚本的结构。

Shell的基本结构

第一行"#!/bin/bash"

在 Linux 中,以"#"开头的一般都是注释,不过这句话是例外的。这句话的作用是标称我以下写的脚本使用的是 Bash 语法,只要写的是基于 Bash 的 Shell 脚本都应该这样开头。这就像在 HTML 语言中嵌入 PHP 程序时,PHP 程序必须用<??>包含起来。

不过,有一些比较喜欢钻研的人也会有疑问,他们在写 Shell 脚本时,不加"#!/bin/bash"这句话,Shell 脚本也可以正确执行。那是因为我们是在默认 Shell 就是 Bash 的 Linux 中编写的脚本,而且脚本是纯 Bash 脚本才能够正确执行。如果把脚本放在默认环境不是 Bash 的环境中运行,又或者编写脚本的不是纯 Bash 语言,而是嵌入了其他语言(如 Tcl 语言),那么这个脚本就不能 正确执行了。所以,大家记住我们的 Shell 脚本都必须以"#!/bin/bash"开头。

第二行:注释

在 Shell 脚本中,除"#!/bin/bash"这行外,其他行只要以"#"开头的都是注释。第二行就是我们这个脚本的注释,建议大家在写程序时加入清晰而详尽的注释,这些都是建立良好编程规范时应该注意的问题。

第三行:程序的主体

既然 echo 命令可以直接打印"www.xinbaoku.com",那么将这句话放入 Shell 脚本中也是可以正确执行的,因为 Linux 的命令是可以直接在脚本中执行的。

运行方式

Shell 脚本写好了,那么这个脚本该如何运行呢?在 Linux 中,脚本的运行主要有以下两种方法:

赋予执行权限,直接运行

这种方法是最常用的 Shell 脚本运行方法,也最为直接简单。就是赋予执行权限之后,直接运行。当然,运行时可以使用绝对路径,也可以使用相对路径。命令如下:

[root@localhost sh]# chmod 755 hello.sh
#赋予执行权限
[root@localhost sh]# /root/sh/hello.sh
www.xinbaoku.com
#使用绝对路径运行
[root@localhost sh]#./hello.sh
www.xinbaoku.com
#因为我们已经在/root/sh目录中,所以也可以使用相对路径运行

Shell 脚本是否可以像 Linux 系统命令一样,不用指定路径,直接运行呢?当然是可以的,不过需要进行环境变量的配置。这里大家只需要知道,我们自己写的 Shell 脚本默认是不能运行的,要么使用绝对路径,要么使用相对路径。

通过Bash调用运行脚本

这种方法也非常简单,命令如下:

[root@localhost sh]# bash hello.sh
www.xinbaoku.com

这种方法的意思是直接使用 Bash 去解释脚本中的内容,所以这个脚本也可以正常运行。使用这种方法运行脚本,甚至不需要脚本文件有"执行"权限,只要拥有"读"权限就可以运行了。

这两种 Shell 脚本的运行方式,大家可以按照个人习惯随意使用。