Chinaunix首页 | 论坛 | 博客
  • 博客访问: 19881134
  • 博文数量: 679
  • 博客积分: 10495
  • 博客等级: 上将
  • 技术积分: 9308
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-18 10:51
文章分类

全部博文(679)

文章存档

2012年(5)

2011年(38)

2010年(86)

2009年(145)

2008年(170)

2007年(165)

2006年(89)

分类:

2006-07-28 10:31:25

第14章环境和shell变量
有两种变量,本地和环境。严格地说可以有4种,但其余两种是只读的,可以认为是特殊变量,它用于向shell脚本传递参数。
本章内容有:
• shell变量。
• 环境变量。
• 变量替换。
• 导出变量。
• 特定变量。
• 向脚本传递信息。
• 在系统命令行下使用位置参数。

变量设置时的不同模式

Variable-name =value 设置实际值到Variable-name

Variable-name +value 如果设置了Variable-name,则重设其值

Variable-name:?value 如果未设置Variable-name,显示未定义用户错误信息

Variable-name ?value 如果未设置Variable-name,显示系统错误信息

Variable-name:= value 如果未设置Variable-name e,设置其值

Variable-name :- value 同上,但是取值并不设置到Variable-name,可以被替换

 

注意,等号两边可以有空格。如果取值包含空格,必须用引号括起来。shell变量可以

用大小写字母。

 

变量的设定,显示和清除

[root@Meil_88 root]# HELLO='Hello World!'

[root@Meil_88 root]# echo $HELLO

Hello World!

[root@Meil_88 root]# echo ${HELLO};

Hello World!

[root@Meil_88 root]# echo ${HELLO};

 

[root@Meil_88 root]#

 

 

使用set命令显示所有本地定义的shell变量。

 

设置只读变量:

[root@Meil_88 root]# HELLO='Hello World!'

[root@Meil_88 root]# readonly HELLO

[root@Meil_88 root]# HELLO="YES"

-bash: HELLO: readonly variable

 

 

环境变量用于所有用户进程(经常称为子进程),不像本地变量(只用于现在的shell)环境变量可用于所有子进程,这包括编辑器、脚本和应用。

环境变量可以在命令行中设置,但用户注销时这些值将丢失,因此最好在profile文件中定义。系统管理员可能在/etc/profile文件中已经设置了一些环境变量。将之放入profile文件意

味着每次登录时这些值都将被初始化。

环境变量应用于用户进程前,必须用export命令导出。

使用env命令可以查看所有的环境变量。比如export HELLO


嵌入shell变量
CDPATH:改变目录路径变量,保留一系列由冒号隔开的路径名,用于cd命令
EXINIT:EXINIT变量保存使用vi编辑器时的初始化选项。
HOME:通常定位于passwd文件的倒数第2列,用于保存用户自身文件。
IFS:用作shell指定的缺省域分隔符。
LOGNAME:
MAIL
MAILCHECK
MAILPATH
PATH
PS1:基本提示符包含s h e l l提示符,缺省对超级用户为#,其他为$。可以使用任何符号作提示符
PS2:PS2为附属提示符,缺省为符号> 。PS2用于执行多行命令或超过一行的一个命令。
SHELL
TERMINFO:终端初始化变量保存终端配置文件的位置。通常在/usr/lib/terminfo或/usr/share/terminfo/
TERM:保存终端类型。设置TERM使应用获知终端对屏幕和键盘响应的控制序列类型,常用的有vt100,vt200、vt200-8等。
TZ

其他环境变量:
EDITOR
PWD
PAGER
MAMPATH
LPDEST或PRINTER

环境变量可以在不同的程序中传递参数.

位置变量参数:
本章开始提到有4种变量,本地、环境,还有两种变量被认为是特殊变量,因为它们是只读的。这两种变量即为位置变量和特定变量参数。
参数相关数目传入脚本,此数目可以任意多,但只有前9个可以被访问,使用shift命令可以改变这个限制。


表14-2 特定shell变量
$# 传递到脚本的参数个数
$*以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个
$$ 脚本运行的当前进程I D号
$! 后台运行的最后一个进程的进程I D号
$@ 与$#相同,但是使用时加引号,并在引号中返回每个参数
$- 显示shell使用的当前选项,与set命令功能相同
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
阅读(3621) | 评论(0) | 转发(0) |
0

上一篇:第13章登录环境

下一篇:深圳指南

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