日期:2014-05-16  浏览次数:20697 次

awk ,shell编程
ENV=`env   |   awk   -F "= "   '{print   $1} '   |   tr   "\n "   "   "` //这一句是啥意思?。。
KEEP_ENV= "HOSTNAME   TERM   SHELL   PS1   USER   PATH   PWD   HOME "//这个是环境变量列表
for   e   in   $ENV
do
        f= "0 "
        for   k   in   $KEEP_ENV
        do
                if   [   $k   =   $e   ]
                then
                        f= "1 "       //是在这里输出的么?。。
                        break
                fi
        done
        if   [   $f   =   "0 "   ]
        then
                unset   $e
        fi
done
env//为什么最后加个env?

,这段代码输出结果是把上面列出的环境变量值显示出来,没列出的就全部unset。请高人帮我讲解下这段代码的意思,awk在这里是如何使用的等等。。谢谢了


------解决方案--------------------
awk -F "= " '{print $1} '
显示内容中以“=”分割的第一列数据
------解决方案--------------------
ENV=`env | awk -F "= " '{print $1} ' | tr "\n " " "` //这一句是啥意思?。。

=右边是反撇号括起来的一个命令,将此命令执行的结果赋给ENV
1、执行env命令,结果管道(竖线表示管道)输出给awk,awk命令取出前面输出的第一列,然后结果再输出给tr,tr命令将回车替换成空格。

最后加个env,大概跟你的应用有关。

awk的使用比较复杂,这里有一篇介绍:
http://www.chinaunix.net/jh/7/16985.html



------解决方案--------------------
//awk -F "= " '{print $1} '

这是awk的固定用法
-F "= "表示用等号作为列分隔符
$1表示第一列
print $1表示在屏幕上打印第一列
------解决方案--------------------
env//为什么最后加个env?
======================
最后加个env,显示所有的环境变量啊!