Shell位置参数(转)

转 :http://blog.chinaunix.net/uid-20754793-id-177652.html

 

1、 位置参数

 由系统提供的参数称为位置参数。位置参数的值可以用$N得到,N是一个数字,如果为1,即$1.类似C语言中 的数组,在shell解释用户的命令时,将把命令行的第一个字作为命令,而其他的字作为参数。当命令对应的可执行文件为Shell程序时,这些参数将作为 位置变量传送给该程序。第0号为程序名字,从1开始就表示传递给程序的参数。第一个参数记为$1,第二个为$2....第九个为$9。其中1到9是真正的 参数名,"$"符只是用来标识变量的替换。

2、 内部参数

  上述过程中的$0是一个内部变量,它是必须的,代表程序本身,而$1则可有可无。和$0一样的内部变量还有以下几个。

    $# ----传递给程序的总的参数数目
  $? ----上一个代码或者shell程序在shell中退出的情况,如果正常   退出则返回0,反之为非0值。
  $* ----传递给程序的所有参数组成的字符串。
    $- ----在Shell启动或使用set命令时提供选项
    $? ----上一条命令执行后返回的值
    $$ ----当前shell的进程号
    $! ----上一个子进程的进程号
    $@ ----所有的参数,每个都用双括号括起
    $n ----位置参数值,n表示位置
    $0 ----当前shell名

 

  例:建立一个内容为如下的程序P1:

  echo “Program name is $0”
  echo “There are totally $# parameters passed to this program”
  echo “The last is $?”
  echo “The parameters are $*”

  执行后的结果如下:

  [beichen@localhost bin]$ P1 this is a test program //传递5个参数

  Program name is /home/beichen/bin/P1 //给出程序的完整路径和名字

  There are totally 5 parameters passed to this program //参数的总数

  The last is 0 //程序执行结果

The parameters are this is a test program //返回有参数组成的字符串0

你可能感兴趣的:(Shell)