在shell编程时.可以使用参数。Shell有位置参数和内部参数
1、 位置参数
由系统提供的参数称为位置参数。位置参数的值可以用$N得到,N是一个数字,如果为1,即$1.类似C语言中的数组,Linux会把输入的命令字符串分段并给每段进行标号,标号从0开始。第0号为程序名字,从1开始就表示传递给程序的参数。如$0表示程序的名字,$1表示传递给程序的第一个参数,以此类推。
2、 内部参数
上述过程中的$0是一个内部变量,它是必须的,而$1则可有可无。和$0一样的内部变量还有以下几个。
$# ----传递给程序的总的参数数目
$? ----上一个代码或者shell程序在shell中退出的情况,如果正常退出则返回0,反之为非0值。
$* ----传递给程序的所有参数组成的字符串。
下面举例进行说明
[root@server tmp]# cat test.sh
#!/bin/bash
#test shell
echo $0
echo $1
echo $2
echo $?
echo $*
echo $#
[root@server tmp]# ./test.sh yema Bhanv edu network
./test.sh //程序名称
Yema //第一个参数
Bhanv //第二个参数
0 //程序执行结果
yema Bhanv edu network //传递参数所组成的字符串
4 //参数个数
1)编写shell脚本
#!/bin/bash
echo " $0 hahah, $1 , $2"
exit
2)在命令行中输入sh tt8.sh 10 12
这时你会看到的运行结果是:
tt8.sh hahah, 10 , 12
2.$#:命令行或者是位置参数的个数.3.$*:所有的位置参数,被作为一个单词.注意:"$*"必须被""引用.
4.$@:与$*同义,但是每个参数都是一个独立的""引用字串,这就意味着参数被完整地传递,并没有被解释和扩展.这也意味着,每个参数列表中的每个参数都被当成一个独立的单词.注意:"$@"必须被引用.
5.$-:传递给脚本的falg(使用set 命令).注意:这起初是ksh 的特征,后来被引进到Bash 中,但不幸的是,在Bash 中它看上去也不能可靠的工作.使用它的一个可能的方法就是让这个脚本进行自我测试(查看是否是交互的).
6.$!:在后台运行的最后的工作的PID(进程ID).
7.$_:保存之前执行的命令的最后一个参数.
8.$?:命令,函数或者脚本本身的退出状态
9.$$:脚本自身的进程ID.这个变量经常用来构造一个"unique"的临时文件名.