简单的Linux脚本程序


脚本的概念:

Bash程序不仅可以作为用户管理Linux系统的命令操作环境,同时也可以作为一种优秀的脚本程序语言。凡是使用Shell编程的语言编写的程序都可以称为Shell脚本,通俗一点说,只要将一些Linux命令按顺序保存到一个文本文件中,并给予这个文件可执行权限,那么这个文件就可以称为Shell脚本。当然,Shell脚本是为了完成一定的管理任务才创建的,因此脚本文件中的各条命令并不是杂乱无章随便放置的,这就需要用户来进行组织和设计了。

编写Shell脚本文件 (建立包含可执行语句的文件文件)

使用文本编辑器程序(如:vi)创建脚本文件,文件名中可以使用扩展名(如:“.sh”),也可以不使用扩展名,并没有强制的要求。脚本中可能包括的内容如下:

运行环境设置:通常位于文件的第一行,用户指定使用那一个Shell程序进行解释。设置时以“#!”开始,后面紧跟上指定的Shell程序的完成路径,如“#!/bin/bash”。

注释行:在脚本文件中,除了以“#!”开头的Shell环境设置行以外,其他以“#”符号开头的内容将被视为注释信息,执行脚本时将予以忽略。编写脚本程序时,添加必要的注释语句是一个良好的习惯,这样将大大增强脚本文件的易读性,方便在不同时间,不同用户间交流使用。

可执行语句:可执行语句是Shell脚本程序中最重要的组成部分,在命令行操作界面中可以执行的命令都可以写入到脚本当中,程序运行时默认情况下将会按照顺序依次解释执行。除此以外,还可以添加一些程序结构语句,用户灵活控制执行过程,提高程序执行效率。

eg:使用vi编辑器编写一个简单的Shell脚本文件test.sh,用于报告当前系统中“/boot”目录所占用的空间大小,并列出其中的内核文件的属性信息。

#!/bin/bash
#To show the size of /boot and the mode of kernel files.
echo "size of /boot:"
du -sh /boot
echo "the mode of kernel files:"
ls -lh /boot/vmlinuz-*

输出:

www.bkjia.com@virtual-machine:~$ bash test.sh
size of /boot:
26M /boot
the mode of kernel files:
-rw-r--r-- 1 root root 5.0M  2月 14  2013 /boot/vmlinuz-3.5.0-23-generic

执行Shell脚本有多种方式:

>直接执行带"x"权限的脚本文件

为脚本文件设置了可执行属性后,在Shell命令行中可以直接通过脚本文件的路径执行脚本程序,这也是最常用的一种方式,执行时需要在文件名之前加入“./”路径,明确执行需要执行当前目录下的脚本文件,这种方法也是出于对系统安全性的考虑。 

>使用Shell解释器程序执行脚本

这种方式可以将脚本文件作为指定Shell解释器程序(如:bash、sh等)的参数,由解释器程序负责读取脚本文件中的内容并执行,因此并不需要脚本文件具有可执行属性。此方法通常只在脚本的调试阶段使用。

>:使用“.”命令执行脚本

使用Shell解释器程序(如:bash)执行指定脚本文件时,是在当前Shell中启动一个子Shell来运行脚本程序,因此脚本程序中定义的环境变量只能在子Shell环境中使用,而无法在用户当前的Shell环境中使用。

使用Bash的内部命令“.”(或使用source命令,其作用相同)加载指定的脚本文件并执行时,系统将不会开启新的Shell环境。使用这种方式时,脚本文件作为“.”命令的参数,因此同样不要求脚本文件具备“x”权限。例如,在修改完“/etc/profile”文件以后,可以执行“. /etc/profile”命令,使得在文件中新设置的变量立即生效,而无需重新登录。

相关阅读:

Linux脚本程序自动修改网卡配置文件中的MAC地址  

使用system()函数调用Linux脚本

Linux脚本中的break continue exit return 

Linux脚本编程:Bash shell脚本的大括号

Linux脚本Bash中的文本利器-sed 

Linux脚本Bash中的文本利器-awk 

相关内容