免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1187 | 回复: 3
打印 上一主题 下一主题

简单问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-05-15 11:50 |只看该作者 |倒序浏览
请讲一下GETOPTS
另外eval '/usr/bin/id | /usr/bin/sed   's/[^a-z0-9=].*//''什么意思,谢谢

论坛徽章:
0
2 [报告]
发表于 2003-05-15 12:54 |只看该作者

简单问题

另外eval '/usr/bin/id | /usr/bin/sed 's/[^a-z0-9=].*//''什么意思,谢谢


/usr/bin/id | /usr/bin/sed 's/[^a-z0-9=].*//'
是把uid=123这个字符串提取出来
eval `uid=123` 系执行uid=123命令
eval 'uid=123'不知道系什么意思.

论坛徽章:
0
3 [报告]
发表于 2003-05-16 11:06 |只看该作者

简单问题

?UP

论坛徽章:
0
4 [报告]
发表于 2003-05-16 11:56 |只看该作者

简单问题

/usr/bin/id | /usr/bin/sed 's/[^a-z0-9=].*//
执行id命令作为sed的输入.在这里sed script的意思是,将所有不是字母和数字和
等于号"="和后面跟任意多个字符的字符串都替换为空.这是sed的用法,你可以看关于sed和正则表达试的质料.[^a-z0-9=].*是一个正则表达试,sed 's/..../../' 是sed的替换字符串的用法.你执行id时会显示类似:uid=0(root) gid=3(sys) groups=3(sys).....东东.在执行上诉命令时,sed发现uid=0后是一个小括弧'('
不是字母也不是数字,而且后面跟的是root gid=3...l的任意的字符(空格也属于
任意字符),所以sed会将uid=0后面的字符全部替换为空即删除掉,所以你
执行完/usr/bin/id | /usr/bin/sed 's/[^a-z0-9=].*//
后,会仅仅显示uid=0.
关于eval是指将eval后的字符串当作一个命令来执行,
eval后跟单引号'或反倒引号还是双引号在eval uid=123都是一样的意思(仅仅这
个列子是一样的意思)即将uid=123当一个命令来看,即将123付值给变量uid,你用echo $uid就可以看到uid的值变为了123.
但实际上反导引号也有执行命令的意思,但它与eval是不同的.在这就不详细ggyy了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP