用户能够用任何编辑程序来编写Shell程序。由于Shell程序是解释执行的,因此不须要编译成目的程序。按照Shell编程的惯例,以 bash为例,程序的第一行通常为“#!/bin/bash”,其中 # 表示该行是注释,叹号 ! 告诉Shell运行叹号以后的命令并用文档的其他部分做为输入,也就是运行/bin/bash并让/bin/bash去执行Shell程序的内容。 编程
执行Shell程序的方法有3种。 bash
1.sh Shell程序文件名 编辑器
这种方法的命令格式为: 命令行
bash Shell程序文件名 调试
这其实是调用一个新的bash命令解释程序,而把Shell程序文件名做为参数传递给它。新启动的Shell将去读指定的文件,可执行文件中列出的命令,当全部的命令都执行完后结束。该方法的优势是能够利用Shell调试功能。 文档
2.sh 编译
格式为: 变量
bash< Shell程序名 终端
这种方式就是利用输入重定向,使Shell命令解释程序的输入取自指定的程序文件。 引用
3.用chmod命令使Shell程序成为可执行的
一个文件可否运行取决于该文档的内容自己可执行且该文件具备执行权。对于Shell程序,当用编辑器生成一个文件时,系统赋予的许可权都是644(rw-r-r--),所以,当用户须要运行这个文件时,只须要直接键入文件名便可。
在这3种运行Shell程序的方法中,最好按下面的方式选择:当刚建立一个Shell程序,对它的正确性尚未把握时,应当使用第一种方式进行 调试。当一个Shell程序已经调试好时,应使用第三种方式把它固定下来,之后只要键入相应的文件名便可,并可被另外一个程序所调用。
4.bash程序的调试
在编程过程当中不免会出错,有的时候,调试程序比编写程序花费的时间还要多,Shell程序一样如此。
Shell程序的调试主要是利用bash命令解释程序的选择项。调用bash的形式是:
bash -选择项Shell程序文件名
几个经常使用的选择项是:
-e 若是一个命令失败就当即退出。
-n 读入命令可是不执行它们。
-u 置换时把未设置的变量看作出错。
-v 当读入Shell输入行时把它们显示出来。
-x 执行命令时把命令和它们的参数显示出来。
上面的全部选项也能够在Shell程序内部用“set -选择项”的形式引用,而“set +选择项”则将禁止该选择项起做用。若是只想对程序的某一部分使用某些选择项时,则能够将该部分用上面两个语句包围起来。
(1)未置变量退出和当即退出
未置变量退出特性容许用户对全部变量进行检查,若是引用了一个未赋值的变量就终止Shell程序的执行。Shell一般容许未置变量的使用,在 这种状况下,变量的值为空。若是设置了未置变量退出选择项,则一旦使用了未置变量就显示错误信息,并终止程序的运行。未置变量退出选择项为-u。
当Shell运行时,若遇到不存在或不可执行的命令、重定向失败或命令非正常结束等状况时,若是未经从新定向,该出错信息会显示在终端屏幕上, 而Shell程序仍将继续执行。要想在错误发生时迫使Shell程序当即结束,可使用-e选项将Shell程序的执行当即终止。
(2)Shell程序的跟踪
调试Shell程序的主要方法是利用Shell命令解释程序的-v或-x选项来跟踪程序的执行。-v选择项使Shell在执行程序的过程当中,把 它读入的每个命令行都显示出来,而-x选择项使Shell在执行程序的过程当中把它执行的每个命令在行首用一个+加上命令名显示出来。并把每个变量和 该变量所取的值也显示出来。所以,它们的主要区别在于:在执行命令行以前无-v,则显示出命令行的原始内容,而有-v时则显示出通过替换后的命令行的内 容。
除了使用Shell的-v和-x选择项之外,还能够在Shell程序内部采起一些辅助调试的措施。例如,能够在Shell程序的一些关键地方使 用echo命令把必要的信息显示出来,它的做用至关于C语言中的printf语句,这样就能够知道程序运行到什么地方及程序目前的状态。