分类: LINUX
2008-12-17 16:05:07
利用read命令可以从键盘上读取数据,然后赋给指定的变量。read命令的一般格式是:
|
例如:
|
输入数据时,数据间以空格或制表符作为分隔符。如果变量个数与给定数据个数相同,则依次对应赋值;如果变量个数少于数据个数,则从左至右对应赋值,但最后一个变量被赋予剩余的所有数据;如果变量个数多于给定数据个数,则依次对应赋值,而没有数据与之对应的变量取空串。
5.位置参数
执行Unix/Linux命令或Shell 脚本时可以带有实参。相应地,在Shell脚本中应有变量。执行Shell程序时,用实参去替代这些变量。在Shell脚本中这类变量的名称很特别,分别 是0、1、2……这类变量称作位置变量,因为它们与命令行上具体位置的实参相对应:命令名(脚本名)对应位置变量0,第一个实参对应位置变量1,第二个实 参对应位置变量2……如果位置变量是由两个或更多个数字构成,那么,必须把它们用一对花括号括起来,如{10}、{11}。命令行实参与脚本中位置变量的 对应关系如图 1所示。
例如:
|
如果在脚本中使用的位置参数不超过9个,那么只用$1~$9即可。但是,实际给定的命令行参数有可能多于9个,此时就需要用shift命令移动位置参数。每执行一次shift命令,就把命令行上的实参向左移一位,即相当于位置参数向右移动一个位置,如图2所示。
图2虚线示出实参与位置参数的对应关系。可以看出,shift命令执行后新$1的值是原$2的值,新$2的值是原$3的值,依此类推。
shift命令不能将$0移走,所以经shift右移位置参数后, $0的值不会发生变化。
在Shell中,预先定义了几个有特殊含义的Shell变量,它们的值只能由Shell根据实际情况进行赋值,而不能通过用户重新设置。下面给出这些特殊变量的表示形式及意义:
$# 命令行上实际参数的个数,但不包含Shell脚本名。
$?上一条命令执行后的返回值(也称作 “退出码”)。它是一个十进制数。多数Shell命令执行成功时,则返回值为0;如果执行失败,则返回非0值。
$$ 当前进程的进程号。
$! 上一个后台命令对应的进程号,这是一个由1~5位数字构成的数字串。
$- 由当前Shell设置的执行标志名组成的字符串。例如:
|
这个命令行给Shell设置了标志-x和-v(用于跟踪输出)。
$* 表示在命令行中实际给出的所有实参字符串,它并不仅限于9个实参。
$ @ 它与$*基本功能相同,但“$@”与“$*”不同。
7.环境变量
Linux环境(也称为Shell环境)由许多变量及这些变量的值组成。这些变量和变量的值决定了用户环境的外观。注意,如果要使用环境变量或其它Shell变量的值,必须在变量名之前加上一个“$”符号,不能直接使用变量名。
常用的环境变量如下:
HOME 用户主目录的全路径名。
LOGNAME 即注册名,由Linux自动设置。它是与系统交互的名字或字符串。
MAIL 系统信箱的路径。
PATH 查找命令的目录列表。PATH变量包含带冒号分界符的字符串,这些字符串指向含有所使用命令的目录。
PS1 Shell的主提示符。bash默认的主提示符一般为“\s-\v\$ ”。其中,\s表示Shell的名称;\v表示bash的版本号。当然,也可以随意设置PS1的值,例如:
|
则主提示符改成“Enter Command> ”。
PWD 当前工作目录的路径,它指出目前在Linux文件系统中处在什么位置。
SHELL 当前使用的Shell,它也指出Shell解释程序放在什么地方。
TERM 终端类型。
可以使用unset命令删除一个环境变量(如NAME):
|
可以创建一个新的环境变量,或者改变一个已有的环境变量的值,其形式与设置一般变量相同。如果变量值的字符串中带有空格等特殊字符,需要用引号把整个字符串括起来。利用export命令可以将这些变量导出,使它们成为公用量,如:
|
可以利用env命令列出所有的环境变量,包括本进程及以前的“祖先进程”所导出的变量。
8.参数置换变量
参数置换变量是另一种为变量赋值的方式,其一般形式是:
|
其中,op表示操作符,它可以是下列四个操作符之一“: :-”、“: =” 、“: +” 和“: ?”。变量2的值取决于变量1(参数)是否为空串、利用哪个操作符及字符串的取值。在操作符的前后不留空格。