Chinaunix首页 | 论坛 | 博客
  • 博客访问: 129030
  • 博文数量: 22
  • 博客积分: 1533
  • 博客等级: 上尉
  • 技术积分: 225
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-30 11:09
文章分类

全部博文(22)

文章存档

2011年(1)

2010年(7)

2008年(14)

我的朋友

分类:

2010-08-18 12:42:13

shell变量没有类型之分,变量类型只是文本字符,系统是不会自动识别成其它类型的(如数字、布尔)。

变量的赋值

格式: NAME=value (注意等号两边不能有空格)

name=proinsight    # 正确   方法1

name = proinsight  # 错误,不能有空格

name="proinsight"  # 正确   方法2

name='proinsight'  # 正确   方法3

如果传入的值中不包含空格等分割符, 采用方法1,2,3。如果传入的值中包含空格等分割符,采用方法2,3。如果传入的值包含其它变量,采用方法2。

如何将hello world 赋值给sentence变量:

sentence="hello world"  # 正确

sentence='hello world'  # 正确

sentence=hello world    # 错误

sentence="hi, $name"   #正确,sentence值为: hi, proinsight

sentence='hi, $name'   #错误,sentence值为: hi, $name

小结:" "(双引号) 与 ' ' (单引号) 的区别

    在双引号中,变量名称将被变量值所替代。
    在单引号中,变量名称,或者任何其他文本都会不经修改而传出来。
  • 变量的调用
  • 在变量前加$,同样,变量的调用也有三种方法

    name="proinsight"

    echo $name    #方法1

    echo ${name}  #方法2

    echo "$name"  #方法3

    通常情况下方法1、2、3都可以。只是在一些特殊条件下,方法1无法处理

    如何输出name值的同时加入abc后缀,既输出proinsightabc

    echo $nameabc   #错误,会把nameabc看成一个变量,并输入变量值。

    echo ${name}abc #正确

    那么方法3有什么用途呢?看一下下面的代码(当name中的值为空时,输出"empty name"):

    if [ -z $name ]; then

    echo "empty name"

    fi

    猜测一下什么情况代码无法顺利执行。

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

    if [ -z "$name" ]; then

    echo "empty name"

    fi

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

    上一篇:变量替换与扩展

    下一篇:shell小结

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