文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>shell 变量

shell 变量

时间:2010-04-09  来源:wangchenxicool

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”)

    1 if [ -z $name ]; then
    2     echo "empty name"
    3 fi

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

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

    1 if [ -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表示没有错误,其他任何值表明有错误

    原创文章,如转载,请注明:转载自脚本学习 [ http://www.scriptlearn.com ]

标签: shell, 变量

相关文章:

  • PHP 将数组拆分成多个变量: extract()函数
  • shell 编程中常用的条件判断
  • shell编程的基本常识
  • for what? while与until差在哪?-shell十三问之第13问
  • 你要if还是case呢?-shell十三问之第12问
  • >与<差在哪?-shell十三问之第11问
  • &&与||差在哪?-shell十三问之第10问
  • $@与$*差在哪?-shell十三问之第9问
  • $(())与$()还有${}差在哪?-shell十三问之第8问
  • ()与{}差在哪?-shell十三问之第7问
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载