通常,位置参数(positional parameter),也就是特定内置变量常被shell脚本用来从命令行接收参数,或者被函数用来保存传递给它的参数。
这些变量之所以被称为位置参数,是因为shell用它们在命令行上的位置来指代它们。Bourne shell最多允许使用9个位置参数。
shell脚本的名称被保留在变量$0中,可以用set命令来设置或复位这些位置参数。
[root@centos ~]# set file1 file2 file3 #把位置参数重置为file1、file2、file3
[root@centos ~]# echo \$$# #美元符被转义,$#指的是参数的个数
$3
[root@centos ~]# eval echo \$$# #执行命令之前,eval命令对命令行进行第二遍解析。第一遍解析时shell把\$$#替换为$3,第二遍解析时,shell又将$3替换为它的值即file3
file3
其他特殊变量:shell有些由单个字符构成的特殊变量,在字符前面加上美元符就能访问变量中保存的值。
引用被用来保护特殊元字符,使其不被解释。引用有3种方式:反斜杠、单引号和双引号。
单引号可以保护特殊元字符不被解释。双引号也能保护特殊元字符不被解释,但是它允许处理变量替换字符(美元符)和命令替换字符(反引号)。
单引号和双引号都必须成对出现,如果不是成对出现而是只有一边则会导致程序异常终止,并将显示错误信息:'end of file' unexpected。
反斜杠用于引用(或转义)单个字符,使其免受解释。
单引号里的反斜杠可以不被解释。
如果是在双括号里,反斜杠将保护美元符($)、反引号(``)和反斜杠不被解释。
单引号能保护其中的所有元字符不被解释。
要打印单引号,必须用双引号把它括起来或用反斜杠转义它。
双引号允许对它所括的内容进行变量替换和命令替换,同时保护其他的特殊字符不被shell解释。
阅读(1426) | 评论(5) | 转发(0) |