Shell程序,通常称为Script,它其实只是一个纯文本文件,可以用vi(vim)等文本编辑器来编辑。Script中文译名为“脚本”。
1、Shell程序的基本组成
Bash Shell程序的结构大体由:变量设定、内置命令、Shell语法、函数及其他命令行的程序所组成。下面演示一个简单的例子:
- #!/bin/bash
- #
- #Program:
- # This program is show "Hello Word" in screen
- #History:
- # 2012/10/25 wsp bash_version
- #
- echo "Hello Word"
- exit 0
其中,行1以#!(称为sha-bang,它是sharp(#)、bang(!)的简称),表示要用/bin/bash 解译、执行这个Script文件。其他行以#开头者,则为注释(如这里的行2-行7),bash不予以处理。通常脚本的开头(或重要部分)加上一些必要的信息,是写脚本的好习惯。
2、设定执行权限
Bash Script编写完后,在执行之前要先设定该Script的文件属性,使其具有可执行的权限。方法如下:
- chmod +x Script 文件名 #例如 chmod +x test.sh
3、执行Bash Script的方法
Script具有可执行的权之后,就可以测试(执行)便好的程序了。若假设Script程序文件名为 test.sh,文件位置/root/tmp目录中。
执行方法1:
- #切换到Script所在的目录(此时,称为工作目录)
- cd /root/tmp
- ./test.sh #./的意思是,在现在这个工作目录下,执行test.sh
- #绝对路径方式
- /root/tmp/test.sh
执行方法2:- #直接使用bash或sh来执行Script
- cd /root/tmp
- sh tesh.sh #sh其实是一个指向bash的soft link,不过若用sh,bash读取的启动配置文件
- #的方式将和旧版的Boune Shell相同,此时bash的功能...?
- #bash test.sh #使用bash和sh方法执行时,可以不必事先设定Scipt的执行权限
需要了解的是,上述两种执行方法在执行Script时,先行的Shell(称之为父Shell)会开始一个子Shell环境,此Script即是在这个子Shell中执行的。Script执行完毕后,此子Shell环境随即关闭,然后又回到现行的Shell之中。
4、Bash Script排错的基本方法
排错方法一般是,先检查语法的正确性,接着追踪脚本的执行过程。(以test.sh为例)
(4-1)检查Script的语法错误
检查语法的指令:bash -n test.sh
(4-2)追踪Script的执行(逻辑问题)
把程序的执行过程全部显示出来,这称为“追踪Script”。追踪的语法为:bash -x test.sh。其中,-x是只bash要进行追踪之意。
对代码的追踪也可以在脚本里面使用set。set是对要检测的代码打印,set -x 是开启,set +x是关闭,set -o是查看(xtrace),set去追踪一段代码中的显示情况。
- #!/bin/bash
- set -x
- echo "open the set trace"
(4-2)强制变量一定要经过声明才能使用
bash有一内置命令shopt,可以用来设定bash的功能选项。其中有一个选项和程序排错有关,如果启用此选项,可避免因打错变量名造成的程序执行错误。
(4-4)在特定位置摆放echo指令
如果追踪脚本之后还是无法发现错误之处的话,可在脚本中加入echo指令,例如echo显示某些变量的内容,或加入暂停的指令,如sleep 5,以观察输出画面。
- #!/bin/bash
- declare -i i=5
- if [[ i>3 ]]; then
- i=1
- echo "ok1" #冗余输出,用以检查
- else
- i=2
- echo "ok2" #冗余输出,用以检查
- fi
- exit 0
阅读(760) | 评论(0) | 转发(0) |