位置变量和特殊变量参数,它们是只读的.


位置变量:
如果要向一个shell脚本传递信息,可以使用位置参数完成此功能;参数相关数目传入脚本,此数目可以任意多,但只有前9个可以被访问,使用shift命令可以改变这个限制;参数从第一个开始,在第九个结束;每个访问参数前要加$符号;第一个参数为0,表示预留保存实际脚本名字;无论脚本是否有参数,此值均可用.

变量名:$0,$1,$2,$3,$4,$5,$6,$7,$8,$9
说明:
$0: 表示脚本名称。
$1,$2,...,$9:$1表示向脚本传递的第一个参数,$2表示向脚本传递的第二个参数,...,$9表示向脚本传递的第九个参数.

特殊变量(参数)
shell对一些参数做特殊处理,这些参数只能被引用而不能被赋值.

特定shell变量如下:
$# 传递到脚本的参数个数;
$* 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个;
$$ 脚本运行的当前进程ID号;
$! 后台运行的最后一个进程的进程ID号;
$@ 与$*相同,但是使用时加引号,并在引号中返回每个参数;
$- 显示shell使用的当前选项,与set命令功能相同;
$? 显示最后命令的退出状态.0表示没有错误,其他任何值表明有错误;

示例:

[root@www ~]# cat test_parm.sh    #!/bin/bash    # test_parm.sh 2010年6月7号 http://905557157.qzone.qq.com/    # 本程序仅仅是用来说明shell的位置变量和特别变量的一个示例。    echo "此脚本的名称$0为:$0"    echo "此脚本的第一个位置参数$1为:$1"    echo "此脚本的第二个位置参数$2为:$2"    echo "此脚本的第三个位置参数$3为:$3"    echo "此脚本的第四个位置参数$4为:$4"    echo "此脚本的第五个位置参数$5为:$5"    echo "此脚本的第六个位置参数$6为:$6"    echo "此脚本的第七个位置参数$7为:$7"    echo "此脚本的第八个位置参数$8为:$8"    echo "此脚本的第九个位置参数$9为:$9"    echo "此脚本的第十个位置参数$10为:$10"    echo "由此可见shell将$10认为$1+0";    echo "此脚本的参数个数$#为: $#";    #    #    #    echo;    echo "#############"    echo "变量$*的输出:";    echo "--------------------------------------"    a=("$*");    echo "变量$*的个数为: ${#a[@]}个,其值分别为:";    length_a=${#a[@]};    for ((i=0;i
echo "${a[i]}"; done # # # echo; echo "#############"; echo "变量$@的输出:"; echo "--------------------------------------" b=("$@"); echo "变量$@的个数为: ${#b[@]}个,其值分别为:"; for ((i=0;i<${#b[@]};i++));do echo "${b[i]}"; done # # # echo; echo "脚本当前进程号$$为: $$" echo "最后命令的退出状态$?正确时为: $?" asdf 2>/dev/null; #此命令不可能执行(除非您正好有一个别名与之相同),执行肯定错误,将错误信息丢掉。 echo "最后命令的退出状态$?错误时为: $?" [root@www ~]# [root@www ~]# sh test_parm.sh a b c d e f g h i j k l

此脚本的名称$0为:test_parm.sh
此脚本的第一个位置参数$1为:a
此脚本的第二个位置参数$2为:b
此脚本的第三个位置参数$3为:c
此脚本的第四个位置参数$4为:d
此脚本的第五个位置参数$5为:e
此脚本的第六个位置参数$6为:f
此脚本的第七个位置参数$7为:g
此脚本的第八个位置参数$8为:h
此脚本的第九个位置参数$9为:i
此脚本的第十个位置参数$10为:a0
由此可见shell将$10认为$1+0
此脚本的参数个数$#为: 12

#############
变量$*的输出:
--------------------------------------
变量$*的个数为: 1个,其值分别为:
"a b c d e f g h i j k l"

#############
变量$@的输出:
--------------------------------------
变量$@的个数为: 12个,其值分别为:
"a"
"b"
"c"
"d"
"e"
"f"
"g"
"h"
"i"
"j"
"k"
"l"

脚本当前进程号$$为: 2951
最后命令的退出状态$?正确时为: 0
最后命令的退出状态$?错误时为: 127