1、关于shell scripts
shell scripts是利用 shell的功能写的一个程序program,这个程序是使用纯文本文,将一些shell的语法与指令(含外部指令)写在里面,搭配正则表示法、管线命令与数据流重导向等功能,以达到我们想要的处理目的。其中shell是指文字接口底下可以使我们与系统沟通的一个工具接口;scripts是脚本剧本的意思。
shell scripts 的作用
(1)自动化管理的重要依据
(2)追踪与管理系统的重要工作
(3)简单入侵检测功能
(4)连续指令单一化(将所有指令放入文件中,执行文件即执行所有指令)
(5)简易的数据处理
(6)跨平台支持与学习历程较短
2、scripts 的撰写与执行
shell scripts本质是纯文本文档,通过被编辑文件,来使其一次执行多个指令。
注意事项:(1)指令的执行时自上而下,从左到右进行分析与执行
(2)指令、选项与参数间的多个空白都会被忽略掉
(3)空白行也被忽略。并且有tab键产生的空白也将被忽略
(4)如果读取到一个enter符号(CR),就尝试执行该命令
(5)如果一行的内容太多,则可以使用 \enter 来延伸至下一行
(6) # 可作为批注,加在#后面的内容被在执行过程中被忽略
执行shell scripts文件的方法:
(1)直接下达指令:shell.sh必须具备可读可执行(rx)权限。
绝对路径:使用文件路径来下达指令
相对路径:在相对目录下使用./文件名来进行执行文件
变量PATH功能:将shell.sh放在PATH指定的目录中,例如:~/bin/
(2)以bash程序来执行:透过bash shell.sh 或 sh shell.sh(/bin/sh是/bin/bash的连接档)来执行。
<1>第一个scripts
解释:
(1)第一行#!/bin/bash用来说明该scripts使用的shell名称,因为我们使用的是bash,所以必须要以#!/bin/bash来宣告该文件内使用的是bash语法,由此在程序被执行时,才可以加载bash的相关环境配置文件(一般来说是non-login shell的~./bashrc)并且执行bash来使我们底下的指令能够执行(很多情况下,如果没有设定好该行,程序可能无法执行,因为系统无法判断用什么shell来执行)
(2)除第一行的宣告shell之外,其余带#号的语句都是用作批注用途。
建议养成说明scripts:其中说明内容包含:内容与功能、版本信息、作者信息、建档日期、历史记录等。有助于未来程序该写的debug。
(3)主要环境变量的宣告
建议务必将必要的环境变量 设好,其中PATH与LANG是最重要的。
(4)主要程序部分
上例中的echo部分
(5)执行结果告知
在前面的学习中,我们知道可以使用$?来进行指令是否成功执行,同样我们也可以使用exit来使程序中断,并且回传一个数值给系统,本例中使用exit 0,代表离开scripts并且回传一个0给系统,当执行完scripts时,下达指令echo $? 就可以得到0值。同样我们可以自定义错误信息,利用回传值来进行判断错误。
编写好scripts后通过命令:$ sh hello.sh来进行执行。另外还可以利用$ chmod a+x hello.sh;./hello.sh
3、编写scripts 的规范
(1)在文件开头记录好scripts的功能、版本信息、作者与联系方式、版权宣告方式、历史记录、较为特殊的指令使用绝对路径的方式进行下达、运作时需要的环境 变量预先宣告与设定。