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

关于shell的问题
本帖最后由 besfanfei 于 2012-12-05 22:08:55 编辑

#
#
MYHOSTNAME=`grep MyHostName= /etc/opt/swstorage/swnode.ini | awk -F= '{print $2}'`  
DST_SVR=$2  
#
#


这是一个shell脚本里,执行的时候只有一个参数。
这两行大概的意思是取配置文件里“=”右边的值。有下面的疑问:
1;grep 里为什么要用 MyHostName=?执行的逻辑顺序是什么?先MyHostName= /etc/opt/swstorage/swnode.ini,然后再[结果]|awk -F= '{print $2}',还是/etc/opt/swstorage/swnode.ini | awk -F= '{print $2}',再MyHostName=[结果].

2;DST_SVR=$2,$2和awk -F= '{print $2}'中的$2相同么?只有一个参数,应该没有$2的,若是awk中的$2,为什么可以在下一行使用?
------解决方案--------------------
1 grep 用 MyHostName= 做为关键字搜索文件 /etc/opt/swstorage/swnode.ini 搜到的匹配行 用 awk 
解析 (以  = 作为  域的分隔符), 打印出第二个域的内容(等号右边的)
2. DST_SVR=$2 这里的 2 是  函数的二个参数, awk 里面的 2是第二个 域, 两者 不一样