Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4190701
  • 博文数量: 776
  • 博客积分: 13014
  • 博客等级: 上将
  • 技术积分: 10391
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-22 17:00
文章分类

全部博文(776)

文章存档

2015年(55)

2014年(43)

2013年(147)

2012年(20)

2011年(82)

2010年(429)

分类: LINUX

2010-04-09 08:49:22

shell变量没有类型之分,变量类型只是文本字符,系统是不会自动识别成其它类型的(如数字、布尔)。
与其它语言一样,在shell中用户定义的变量必须有字母数字和下划线组成,并且第一个字符不能为数字,且变量对大小写敏感。

变量的赋值
格式: NAME=value
注意等号两边不能有空格。
1)name=proinsight    # 正确   方法1
2)name = proinsight  # 错误, 不能有空格
3)name="proinsight"  # 正确   方法2
4)name='proinsight'   # 正确    方法3

上面的例子中有三种赋值,那么它们之间的区别是什么呢?
如果传入的值中不包含空格等分割符, 采用方法1,2,3。
如果传入的值中包含空格等分割符,采用方法2,3。
如果传入的值包含其它变量,采用方法2。
如何将hello world 赋值给sentence变量:
1)sentence="hello world"  # 正确
2)sentence='hello world'   # 正确
3)sentence=hello world    # 错误

假设有一变量name存入一人名, 如何对这个人打招呼呢?
1)sentence="hi, $name"   #正确,sentence值为: hi, proinsight
2)sentence='hi, $name'   #错误,sentence值为: hi, $name

小结:” “(双引号) 与 ‘ ‘(单引号) 的区别
在双引号中,变量名称将被变量值所替代。
在单引号中,变量名称,或者任何其他文本都会不经修改而传出来。
变量的调用
在变量前加$,同样,变量的调用也有三种方法
1)name="proinsight"
2)echo $name    #方法1
3)echo ${name}  #方法2
4)echo "$name"  #方法3

通常情况下方法1、2、3都可以。只是在一些特殊条件下,方法1无法处理
如何输出name值的同时加入abc后缀,既输出proinsightabc

1)echo $nameabc   #错误,会把nameabc看成一个变量,并输入变量值。
2)echo ${name}abc #正确

当然,不要小瞧{},它还有很多高级的功能,在此先略过。
那么方法3有什么用途呢?看一下下面的代码(当name中的值为空时,输出”empty name”)
1if [ -z $name ]; then
2    echo "empty name"
3fi

猜测一下什么情况代码无法顺利执行。
嘿嘿,想到了吗?
当name=”a b”时,[ -z $name ]变成 [ -z a b ],这时-z后有两个参数,而-z只需要一个参数。这时shell解释器会报错:[: too many arguments 等类似的错误。
所以当在test命令(即[])这类条件判断语句时,最好采用第3种方法,这样无论变量的值是什么?在执行时会将值看成一个整体。
1if [ -z "$name" ]; then
2    echo "empty name"

变量的分类
本地变量: 本地变量在用户现在的shell生命期的脚本中使用,也常叫用户变量,上面几个例子中的变量都为本地变量
环境变量:环境变量用于所有用户进程, 环境变量可以在命令行中设置,但用户注销时这些值将丢失,因此最好在.profile等登入配置文件中定义。
常用环境变量有:
1. HOME: 用户目录的全路径名
2. PATH:  shell从中查找命令的目录列表
3. IFS: 用作shell指定的缺省域分隔符
4. LOGNAME: 用户登录名
5. MAIL: 邮箱路径名
位置变量:
如果要向一个shell脚本传递信息,可以使用位置参数完成此功能。参数相关数目传入脚本,此数目可以任意多,但只有前9个可以被访问。
如果向脚本传送Welcome to script’s world:
下面表格讲解了如何访问每一个参数
$0           $1               $2         $3            $4           $5   $6   $7   $8   $9
脚本名      Welcome     to         script’s     world
特定变量: 提供脚本运行时的一些相关控制信息
共有7个特定变量,
$#    传递到脚本的参数个数
$*    以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个
$$    脚本运行的当前进程ID号
$!     后台运行的最后一个进程的进程ID号
$@   与$#相同,但是使用时加引号,并在引号中返回每个参数
$-    显示shell使用的当前选项,与set命令功能相同
$?    显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误
阅读(1012) | 评论(0) | 转发(0) |
0

上一篇:Shell编程基础

下一篇:protel封装与快捷

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