免费注册 查看新帖 |

Chinaunix

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

如何用shell从一个字符串中提取出相应的字符? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-26 09:30 |只看该作者 |倒序浏览
请教高手们一个问题:
如何从一个字符串中提取出一段字符:
例如:
sim=/root/sim/benchmark/basicmath
我想将basicmath提取出来,赋值给变量filename,有什么比较好的技巧没有?

元旦快乐!!!!

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2006-12-26 09:35 |只看该作者
filename=${basename "$sim"}

论坛徽章:
0
3 [报告]
发表于 2006-12-26 09:45 |只看该作者
filename={sim##*/}

论坛徽章:
0
4 [报告]
发表于 2006-12-26 09:51 |只看该作者
原帖由 月波无漾 于 2006-12-26 09:45 发表
filename=${sim##*/}

论坛徽章:
0
5 [报告]
发表于 2006-12-26 10:23 |只看该作者
filename=${basename "$sim"}
不行,提示的错误是:
-bash: ${bashname "$sim"}: bad substitution

filename={sim##*/}也不行,echo $filename.显示出来的是:
{sim##*/}

论坛徽章:
0
6 [报告]
发表于 2006-12-26 10:51 |只看该作者
filename=${sim##*/}
这个是可以的。谢谢你们
能给解释一下吗?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
7 [报告]
发表于 2006-12-26 12:34 |只看该作者
filename=${basename "$sim"} 哦.大意了..
应该是这样 filename=$(basename "$sim")

basename  是一个内置的函数..功能如同其名.
对应的还有一个dirname 你可以试试
filename=${sim##*/}这种方法是模式匹配..从开始处匹配任意个字符直接到遇到 最后一个/ (因为两个#.是最大匹配.会匹配到最后一个匹配字符串).然后删除匹配到的字符.

论坛徽章:
0
8 [报告]
发表于 2006-12-26 12:39 |只看该作者
原帖由 月波无漾 于 2006-12-26 09:45 发表
filename={sim##*/}

忘记了$

论坛徽章:
0
9 [报告]
发表于 2006-12-26 12:48 |只看该作者
原帖由 cookis 于 2006-12-26 12:34 发表
filename=${basename "$sim"} 哦.大意了..
应该是这样 filename=$(basename "$sim"

basename  是一个内置的函数..功能如同其名.
对应的还有一个dirname 你可以试试
filename=${sim## ...




dirname, basename 是 coreutils . 不是内建命令

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
10 [报告]
发表于 2006-12-26 15:00 |只看该作者
原帖由 smonkey 于 2006-12-26 10:51 发表
filename=${sim##*/}
这个是可以的。谢谢你们
能给解释一下吗?

http://bbs.chinaunix.net/viewthr ... p;extra=&page=7
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP