谁能帮我详细解释下这行代码么?

sh/bash/dash/ksh/zsh等Shell脚本
回复
tiitoo
帖子: 12
注册时间: 2010-03-17 19:42

谁能帮我详细解释下这行代码么?

#1

帖子 tiitoo » 2010-05-18 20:21

USER_IP=`who am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'
尽量详细点,谢啦! :em09 :em11
hrbeu06ws
帖子: 100
注册时间: 2008-09-25 16:06

Re: 谁能帮我详细解释下这行代码么?

#2

帖子 hrbeu06ws » 2010-05-18 21:42

USER_IP=`who am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
首先,楼主好像少了最后一个`符号。这里``表示命令替换。

代码: 全选

who am i 2>/dev/null
显示登录信息,并且重定向错误信息到位桶中,即丢掉错误信息。

代码: 全选

awk '{print $NF}'
打印最后一个字段,即ip所在的字段。

代码: 全选

sed -e 's/[()]//g'
过滤其中的括号,ip包含在括号当中。

最后将当前登录用户的ip赋值给USER_IP
Power cloaked in simplicity !
tiitoo
帖子: 12
注册时间: 2010-03-17 19:42

Re: 谁能帮我详细解释下这行代码么?

#3

帖子 tiitoo » 2010-05-19 22:14

首先,楼主好像少了最后一个`符号。这里``表示命令替换。
确实少了一个`符号

代码: 全选

sed -e 's/[()]//g'
过滤其中的括号,ip包含在括号当中。
这句话不大懂,能举个例子么?谢...
头像
yingfei
帖子: 273
注册时间: 2007-09-03 18:34
来自: 羊城通

Re: 谁能帮我详细解释下这行代码么?

#4

帖子 yingfei » 2010-05-19 22:47

sed -e 's/[()]//g'
这句的意思是, 去掉所有的 "(" 或者 ")" 。
比如

代码: 全选

echo "(127.0.0.1)"  | sed -e 's/[()]//g'  
会得到

代码: 全选

127.0.0.1
没有了()
  • Ubuntu 10.10 ~
回复