免费注册 查看新帖 |

Chinaunix

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

[Linux资讯] sh的一些小问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-11-24 10:19 |只看该作者 |倒序浏览
##### 进入程序所在目录 #####
if [ `echo "$0" |grep -c "/"` -gt 0 ];
then   
cd ${0%/*}
fi
这个后面的cd  ${0%/*}是个什么意思啊
能逐一讲一下吗

论坛徽章:
0
2 [报告]
发表于 2012-11-24 10:51 |只看该作者
  1. if [ `echo "$0" |grep -c "/"` -gt 0 ];
  2. then   
  3. cd ${0%/*}
  4. fi
复制代码
其实是这样拉,if [ `echo "$0" |grep -c "/"` -gt 0 ] 这里的这个$0应该是命令行参数,代表程序所在路径(这里是绝对路径),然后因为目录是通过'/'分隔的,那么比如这样的路径/usr/share/doc有个/对应了3个目录了,然后cd ${0%/*}这句,先从{0%/*}这里说起,这代表一个串替换,从尾巴上删除$0最后一个目录。比如,你程序在/home/aaa/bbb/a.sh
那么这里得到的路径就是/home/aaa/bbb了

论坛徽章:
0
3 [报告]
发表于 2012-11-24 11:02 |只看该作者
thanks
very much
回复 2# 耗资喜欢猫


   

论坛徽章:
0
4 [报告]
发表于 2012-11-24 11:14 |只看该作者
lkf67109 发表于 2012-11-24 11:02
thanks
very much
回复 2# 耗资喜欢猫

哥,我误导你了,那个$0是程序执行名,这个要我口头来表述有些难,我用例子说吧。比如你程序执行时是用 ./ex.sh的方式执行的,那么$0就代表这里的./ex.sh了,如果你用绝对路径执行的,比如/tmp/shellscript/ex.sh,那么这里的$0就代表/tmp/shellscript/ex.sh了。

论坛徽章:
0
5 [报告]
发表于 2012-11-24 16:21 |只看该作者
:

论坛徽章:
0
6 [报告]
发表于 2012-11-24 21:00 |只看该作者
嗯!是的!鸟哥书说的$0是第一个命令参数!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP