一、创建shell脚本文件
创建shell脚本时,必须在第一行指定要使用的shell。格式为:
#!/bin/bash
通常在shell脚本中,#代表注释行,即不被执行的行,而第一行“#!”则是表示用哪个shell来执行脚本。
实例:
让我们来执行一下这个脚本:
上面的结果显示无法找到此命令,其原因是shell对于命令的查找是通过PATH变量来进行的,如下图所示,而新建的脚本的目录并不在PATH变量中,解决方法:
1、将shell脚本的目录添加到PATH变量中;
2、将脚本复制到PATH变量中存在的目录中;
3、使用绝对或相对路径来执行脚本。
我们使用第三个方法来执行脚本:
结果又出现了报错,提示没有权限;如果需要运行脚本的话,此脚本必须拥有执行权限,而从下图可以看到,此文件没有任何的执行权限:
添加执行权限后再次执行脚本:
上面的结果中显示脚本成功运行。
二、变量
变量的类型包括:环境变量、本地变量(局部变量)、位置变量、特殊变量。
1、环境变量
可以使用set命令来查看当前活运的环境变量。
在脚本中引用环境变量时要在变量名称前加一个“$”符号。
2、本地变量
即本地变量,其命名规则如下:
(1)只能包含字母语、数字和下划线,并且不能以数字开头
(2)不应该跟系统中已有的环境变量重名
(3)最好做到见名知义
上面的例子中将两个变量分别赋值后进行计算,并输出计算的结果。
3、位置变量
$#:#为数字,表示参数的位置;如:$1表示脚本执行时所带的第一个参数。
如上例所示,脚本执行时带了两个参数9和10,分别对应$1和$2两个变量,而$0对应的./test4,即命令本身。
shift n命令可以对参数进行位移,使后面的位置变量向前移动n个位置,如果不带具体的数字默认为1。
4、特殊变量
$?:用于显示命令执行后返回的状态码,命令执行成功则返回1,否则为其它值;
$#:命令执行时所带的参数的个数;
$*:参数列表,将所有参数当做一个参数,而不是多个对象;
$@:参数列表,将所有参数当做多个独立的对象。
上例中的结果两个变量并没有什么区别,得到的结果是相同的。
下面的例子可以看出两个变量的不同之处:
三、测试脚本
脚本执行时出现错误时,可以使用bash命令协助进行错误排除,其命令格式如下:
bash [options] script
常用的选项:
-n:检查脚本的语法错误,且只显示语法出错的内容;
-x:检查脚本的语法错误,且显示脚本执行的每一步内容。
原创文章,作者:petmaster,如若转载,请注明出处:http://www.178linux.com/10658