免费注册 查看新帖 |

Chinaunix

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

这条语句怎么解释啊 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-06-22 09:25 |只看该作者 |倒序浏览
setenv PATH `echo -n "${PATH}" | awk 'BEGIN {RS=":"; ORS=":"} {if (!(index($0, "'${VENDOR_HOME:h}'"))) print $0}'`

想问一下 在${VENDOR_HOME:h}中的":h"是个什么意思,整个语句又是什么意义呢。谢谢

论坛徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序设计版块每日发帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序设计版块每日发帖之星
日期:2016-06-12 06:20:002016科比退役纪念章
日期:2016-05-31 15:47:20CU十四周年纪念徽章
日期:2016-05-27 12:24:562015年亚洲杯之阿曼
日期:2015-05-03 21:01:352015年辞旧岁徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序设计版块每日发帖之星
日期:2016-08-11 06:20:00
2 [报告]
发表于 2011-06-22 09:40 |只看该作者

  1. var=abcd
  2. index=2
  3. echo ${var:index}
  4. cd
复制代码
${var:pos}
变量var从位置pos开始扩展( 也就是pos之前的字符都丢弃).

整个的意思:
取消PATH中包含${VENDOR_HOME:h}的部分

论坛徽章:
0
3 [报告]
发表于 2011-06-22 11:00 |只看该作者
回复 2# liion631818
谢谢解答。照你的说法,其实'${VENDOR_HOME:h}' 和 '${VENDOR_HOME}' 应该是一样的。但是实际执行一个脚本的时候。
下面两种情况的结果是不一样的。为什么会有这种情况发生呢?
setenv PATH `echo -n "${PATH}" | awk 'BEGIN {RS=":"; ORS=":"} {if (!(index($0, "'${VENDOR_HOME:h}'"))) print $0}'`

setenv PATH `echo -n "${PATH}" | awk 'BEGIN {RS=":"; ORS=":"} {if (!(index($0, "'${VENDOR_HOME}'"))) print $0}'`

论坛徽章:
0
4 [报告]
发表于 2011-06-22 11:43 |只看该作者
回复 3# xiaoxiaoshi


    你还是没看懂,不一样

论坛徽章:
0
5 [报告]
发表于 2011-06-22 12:31 |只看该作者
回复 4# wtuter
  1. var=abcd
  2. echo ${var}
  3. abcd
  4. echo ${var:h}
  5. abcd
复制代码
他们不就是一样的吗?有什么不一样给说下,谢谢

论坛徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序设计版块每日发帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序设计版块每日发帖之星
日期:2016-06-12 06:20:002016科比退役纪念章
日期:2016-05-31 15:47:20CU十四周年纪念徽章
日期:2016-05-27 12:24:562015年亚洲杯之阿曼
日期:2015-05-03 21:01:352015年辞旧岁徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序设计版块每日发帖之星
日期:2016-08-11 06:20:00
6 [报告]
发表于 2011-06-22 12:46 |只看该作者
回复 5# xiaoxiaoshi


    兄弟,好好看看,我之前2L给你的代码index变量,可以是有设置值的哦

论坛徽章:
0
7 [报告]
发表于 2011-06-22 14:31 |只看该作者
回复 6# liion631818

问题是我的脚本里面就是只有:h,也就是这个index的值就是h啊
我运行的例子显示 ${var}和${var:h}是一个意思,所以我才说 有没有:h,结果是一样的

论坛徽章:
0
8 [报告]
发表于 2011-06-22 14:32 |只看该作者
回复 6# liion631818

问题是我的脚本里面就是只有:h,也就是这个index的值就是h啊
我运行的例子显示 ${var}和${var:h}是一个意思,所以我才说 有没有:h,结果是一样的

论坛徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序设计版块每日发帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序设计版块每日发帖之星
日期:2016-06-12 06:20:002016科比退役纪念章
日期:2016-05-31 15:47:20CU十四周年纪念徽章
日期:2016-05-27 12:24:562015年亚洲杯之阿曼
日期:2015-05-03 21:01:352015年辞旧岁徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序设计版块每日发帖之星
日期:2016-08-11 06:20:00
9 [报告]
发表于 2011-06-22 14:35 |只看该作者
回复 8# xiaoxiaoshi


    你这是断章取义,你现在看到没区别,那是因为你的变量h根本没有被设置
如果你设置h之后再看,肯定是有不一样的, 比如你在echo 之前设置h=2,你在看看打印的结果

关键现在你给的代码只是个片段,变量h是不是又在前面设置过呢,还得你自己去看完全部代码

论坛徽章:
0
10 [报告]
发表于 2011-06-22 16:07 |只看该作者
回复 9# liion631818

我理解你的意思。但是我的脚本里面,这个h就是一个单纯的字符,不是个变量的,不是是代表2,3
如果这个h就是个字符的话,我就觉得那两个命令是一样的。你觉得呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP