您所在的位置: 首页>>读书频道>>操作系统>>Linux>>

8.3 参数和变量

http://book.51cto.com  2008-05-15 15:59  Mark G. Sobell 著 杨明军等译  清华大学出版社  我要评论(0)
  • 摘要:《Linux命令、编辑器与Shell编程》第8章内容扩充了第5章描述的shell的交互特性,解释了如何创建和运行简单的shell脚本,讨论如何进行作业控制,介绍shell编程的基本方面,讨论命令历史和别名,同时还描述了命令行扩展。本节说的是shell参数和变量。
  • 标签:参数  变量  Shell  Linux命令、编辑器与Shell编程

8.3  参数和变量

变量  在shell中,shell参数与用户可访问的某个值相关。有几种不同的shell参数。参数的名字由字母、数字和下划线组成,常被称为shell变量,或者简称为变量。变量名必须以字母或者下划线开头,而不能是数字。因此像A76、MY_CAT和___X___都是合法的变量名,而69TH_STREET(以数字开头)和MY-NAME(包含连字符)都不是合法的变量名。

用户创建的变量  用户命名并赋值的shell变量称为用户创建的变量。用户可以在任何时候修改用户创建的变量的值,或者将其设置为只读,这样它们的值就不会发生改变。还可以将用户创建的变量变成全局变量。全局变量(又称为环境变量)可以被任何shell和从最初shell创建的其他程序访问。这里有一个命名约定,即全局变量只使用大写字母,而其他变量则使用大小写混合命名。参见第11.3.2节以获取更多关于全局变量的信息。

在Bourne Again Shell中,使用下面的语法将值赋值为变量:

 VARIABLE=value

等号(=)的两边可以没有空格符。下面是一个赋值的示例:

$ myvar = abc

而在TC Shell下面,赋值语句必须以字set开头,等号两边的空格符是可选的:

$ set myvar = abc

Bourne Again Shell允许在命令行中放置变量赋值语句。这些赋值语句只是该命令shell的局部行为,也就是说它们只适用于该命令。shell脚本my_script显示了TEMPDIR的值。下面的命令运行my_script,将TEMPDIR设置为/home/sam/temp。内置命令echo运行结果显示,在运行my_script之后,这个交互式shell中并没有改变TEMPDIR的值。如果TEMPDIR在交互式shell中设置,再按照这种方式运行my_script也不会对它的值有所影响。

$ cat my_script
echo $TEMPDIR
$ TEMPDIR=/home/sam/temp my_script
/home/sam/temp
$ echo $TEMPDIR

$

关键字变量  关键字shell变量(简称为关键字变量)对于shell而言,具有特殊的意义,它们的名字一般比较短而且有助于记忆。当用户启动shell的时候(比如登录),shell将从环境中继承几个关键字变量。HOME和PATH就属于这样的变量。其中,HOME表示用户的主目录。而当用户输入命令时,PATH决定了shell在哪些目录下搜索该命令,同时还决定了搜索时的顺序。当shell启动之后,它再创建和(用默认值)初始化其他关键字变量。而对于其他变量,除非用户设置,否则它们都是不存在的。

用户在任何时候都可以更改大多数关键字shell变量的值,但通常没有必要修改系统初始化文件/etc/profile和/etc/csh.cshrc中初始化的关键字变量的值。如果需要修改bash关键字变量的值,就在初始化文件中进行修改。用户可以将用户创建的变量变成全局变量,同样,可以将关键字变量变成全局变量,这个工作一般在初始化文件中自动完成。用户还可以将关键字变量变为只读。

位置参数和特殊参数  有一组参数的名字并不像变量名。其中,大多数参数的名字都只由一个字符组成(比如1、?和#等),并且像其他所有变量一样,在引用它们时一般在其名字前面加上美元符号(如$1、$?和$#)。这些参数的值反映了用户与shell交互的不同方面。

无论何时,用户输入的一行命令中的每个参数都将成为位置参数的值。用户使用位置参数可以访问命令行参数,在编写shell脚本时将用到这项功能。内置命令set可以用来对位置参数赋值。

其他经常需要用到的shell脚本值,比如最后一次执行的命令名、命令行参数的个数以及最近执行命令的状态等,这些值均保存在特殊参数中。用户不能对特殊参数赋值。

【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节
Shell实用指南
深入Vista应用程序开发
Ruby on Rails 社区网站开发
ASP.NET从入门到精通
Java完全自学宝典
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有