eval 与 env

一般用法:
eval:
语法

    

        

            

        

    

[test @test test]# eval variable
            例题:
            [test @test test]# days=365
            [test @test test]# year=days
            [test @test test]# echo \$$year
            $days  <==第一个 $ 被 \ 改变成为一般字符,而 \$ 后面接的 $year 就成为 days 啦!
            [test @test test]# eval echo \$$year
            365
            加上 eval 之后, \$$year 变成的 $days 的『变量内容』会显现出来喔!

这个指令也是颇有趣的!他主要是用来做为变量的『迭代』用的!以上面的例子来看,起先, \$$year 会变成为 $days ,而这个 $days 其实是一般字符喔!并不是变数!不过,加上了 eval 之后,这个字符串就会被变成变量内容咯!所以说, eval 是用来做为『二次迭代』的功能的!

env
显示目前系统中主要的预设变量内容
语法

    

        

            

        

    

[test @test test]# env
            ENV=/root/.bashrc             <==使用者自订环境变量的设定档案
            HISTSIZE=1000                 <==目前的指令记忆数量
            HOME=/home/test               <==登入者的家目录
            HOSTNAME=test.adsldns.org  <==这部主机的主机名称
            HOSTTYPE=i386              <==这部主机的硬件等级大致状态(i386, i686..)
            INPUTRC=/etc/inputrc          <==一些 shell 加载的数据文件设定处
            LANGUAGE=C                    <==预设语系的资料
            LANG=zh_TW.Big5 
            与 LANGUAGE 类似,这个则是各个 linux distribution 常用的预设语系变量,由于我的 Mandrake 使用中文安装,所以预设语系是中文,亦即 zh_TW.Big5 ,如果我要修改这个变量,可以到 /etc/sysconfig/i18n 去修改!底下的 LC_xxx 均是与预设的表示语系有关的变量,其中比较有趣的是 LC_TIME ,如果在文字接口下,最好将 LC_TIME 改成美规日期的显示方式,才不会有乱码!
            LC_COLLATE=zh_TW.Big5
            LC_CTYPE=zh_TW.Big5
            LC_MESSAGES=zh_TW.Big5
            LC_MONETARY=zh_TW.Big5
            LC_NUMERIC=zh_TW.Big5
            LC_TIME=en
            LESSOPEN=|/usr/bin/lesspipe.sh %s <==用来设定 less 使用的一支 script 档案
            LOGNAME=test                  <==登入者的账号            

MACHTYPE=i586-mandrake-linux-gnu 
            主机的硬件配备等级 i586 为 P MMX 等级,至于 K7 及 PIII 之后的,就是 i686 等级啰!

            

MAIL=/var/spool/mail/test     <==登入者的邮件预设放置地点
            OSTYPE=linux-gnu              <==操作系统的形式(linux-gnu)
            PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/test/bin
            PWD=/home/test                <==目前登入者所在的目录(当下的目录)
            SHELL=/bin/bash               <==登入者使用的 shell 类型
            USER=test                  <==目前这个登入者的使用者名称

            

env environment 的简写,所以说,这个指令主要在将目前系统中的主要变量读出来!但是,不是说我们还可以自订变量吗?因此,除了 env 这个读取环境变量的指令之外,还有一个可以将目前系统中所有的变量数据都读出来的指令,称为 set !set 除了会将上面的数据都给他读出来之外,还会有额外的这些信息也一起读入(通常都与使用者的设定有关!)

其它用法:
——————————-
有php文件a.php:
<?php
echo getenv("a");
?>
则:
eval a=b php a.php
等价于
env a=b php a.php

即: 二者都可以设置环境变量

留下评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据