分类:
2008-04-20 13:44:02
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 环境变量是所有shell 程序都会接受的参数。shell程序运行时,都会接收一组变量,这组变量就是环境变量,它作用于所有的用户进程。在Linux中,登陆进程称为父进程,shell中执行的用户程序均称为子进程。
环境变量可以在命令行中设置,但用户注销时这些值将丢失。因此最好在$HOME/目录下的.profile中定义。传统上环境变量均为大写。环境变量应用于用户进程之前,必须用export命令导出。设置方法与本地变量设置方法相同。
1,显示环境变量
使用env命令或者 printenv 命令可以察看所有环境变量
2,将变量导出到子进程
在父脚本中使用export命令可以将变量导出,这样子脚本便可以知道该变量的值。
如果你希望把你定义的变量让其他所有的shell程序都能使用,也就是定义新的环境变量,你只要使用export关键词就可以了。
3,常用的Shell环境变量有:
HOME 用于保存注册目录的完全路径名。
PATH 用于保存用冒号分隔的目录路径名,Shell将按PATH变量中给出的顺序搜索这些目录,找到的第一个与命令名称一致的可执行文件将被执行。
TERM 终端的类型。
UID 当前用户的识别字,取值是由数位构成的字串。
PWD 当前工作目录的绝对路径名,该变量的取值随cd命令的使用而变化。
PS1 主提示符,在特权用户下,默认的主提示符是#,在普通用户下,默认的主提示符是$。