一般用法:
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
MAIL=/var/spool/mail/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
即: 二者都可以设置环境变量