Chinaunix首页 | 论坛 | 博客
  • 博客访问: 712279
  • 博文数量: 165
  • 博客积分: 8218
  • 博客等级: 中将
  • 技术积分: 1749
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-07 19:48
文章分类

全部博文(165)

文章存档

2014年(4)

2011年(3)

2010年(6)

2009年(43)

2008年(109)

分类: LINUX

2008-12-17 16:05:07

4.交互输入变量值

利用read命令可以从键盘上读取数据,然后赋给指定的变量。read命令的一般格式是:

read  变量1 [ 变量2 …]

例如:

read  a  b  c

输入数据时,数据间以空格或制表符作为分隔符。如果变量个数与给定数据个数相同,则依次对应赋值;如果变量个数少于数据个数,则从左至右对应赋值,但最后一个变量被赋予剩余的所有数据;如果变量个数多于给定数据个数,则依次对应赋值,而没有数据与之对应的变量取空串。

5.位置参数

执行Unix/Linux命令或Shell 脚本时可以带有实参。相应地,在Shell脚本中应有变量。执行Shell程序时,用实参去替代这些变量。在Shell脚本中这类变量的名称很特别,分别 是0、1、2……这类变量称作位置变量,因为它们与命令行上具体位置的实参相对应:命令名(脚本名)对应位置变量0,第一个实参对应位置变量1,第二个实 参对应位置变量2……如果位置变量是由两个或更多个数字构成,那么,必须把它们用一对花括号括起来,如{10}、{11}。命令行实参与脚本中位置变量的 对应关系如图 1所示。

例如:

$ set  `pwd;ls;date`
$ echo $1 $2 $3 $9 ${10} ${11}
/home/mengqc bash_1 ex1 12 3 21:52:32

如果在脚本中使用的位置参数不超过9个,那么只用$1~$9即可。但是,实际给定的命令行参数有可能多于9个,此时就需要用shift命令移动位置参数。每执行一次shift命令,就把命令行上的实参向左移一位,即相当于位置参数向右移动一个位置,如图2所示。

图2虚线示出实参与位置参数的对应关系。可以看出,shift命令执行后新$1的值是原$2的值,新$2的值是原$3的值,依此类推。

shift命令不能将$0移走,所以经shift右移位置参数后, $0的值不会发生变化。


6. 预先定义的特殊变量

在Shell中,预先定义了几个有特殊含义的Shell变量,它们的值只能由Shell根据实际情况进行赋值,而不能通过用户重新设置。下面给出这些特殊变量的表示形式及意义:

$# 命令行上实际参数的个数,但不包含Shell脚本名。

$?上一条命令执行后的返回值(也称作 “退出码”)。它是一个十进制数。多数Shell命令执行成功时,则返回值为0;如果执行失败,则返回非0值。

$$ 当前进程的进程号。

$! 上一个后台命令对应的进程号,这是一个由1~5位数字构成的数字串。

$- 由当前Shell设置的执行标志名组成的字符串。例如:

set  -xv

这个命令行给Shell设置了标志-x和-v(用于跟踪输出)。

$* 表示在命令行中实际给出的所有实参字符串,它并不仅限于9个实参。

$ @ 它与$*基本功能相同,但“$@”与“$*”不同。

7.环境变量

Linux环境(也称为Shell环境)由许多变量及这些变量的值组成。这些变量和变量的值决定了用户环境的外观。注意,如果要使用环境变量或其它Shell变量的值,必须在变量名之前加上一个“$”符号,不能直接使用变量名。

常用的环境变量如下:

HOME 用户主目录的全路径名。

LOGNAME 即注册名,由Linux自动设置。它是与系统交互的名字或字符串。

MAIL 系统信箱的路径。

PATH 查找命令的目录列表。PATH变量包含带冒号分界符的字符串,这些字符串指向含有所使用命令的目录。

PS1 Shell的主提示符。bash默认的主提示符一般为“\s-\v\$ ”。其中,\s表示Shell的名称;\v表示bash的版本号。当然,也可以随意设置PS1的值,例如:

PS1="Enter Command> "

则主提示符改成“Enter Command> ”。

PWD 当前工作目录的路径,它指出目前在Linux文件系统中处在什么位置。

SHELL 当前使用的Shell,它也指出Shell解释程序放在什么地方。

TERM 终端类型。

可以使用unset命令删除一个环境变量(如NAME):

$ unset NAME

可以创建一个新的环境变量,或者改变一个已有的环境变量的值,其形式与设置一般变量相同。如果变量值的字符串中带有空格等特殊字符,需要用引号把整个字符串括起来。利用export命令可以将这些变量导出,使它们成为公用量,如:

export  HOME  HZ  LOGNAME  TERM

可以利用env命令列出所有的环境变量,包括本进程及以前的“祖先进程”所导出的变量。

8.参数置换变量

参数置换变量是另一种为变量赋值的方式,其一般形式是:

变量2=$ {变量1 op 字符串}

其中,op表示操作符,它可以是下列四个操作符之一“: :-”、“: =” 、“: +” 和“: ?”。变量2的值取决于变量1(参数)是否为空串、利用哪个操作符及字符串的取值。在操作符的前后不留空格。

阅读(685) | 评论(0) | 转发(0) |
0

上一篇:shell 编程3

下一篇:shell 编程5

给主人留下些什么吧!~~