当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 9 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 麻烦解析一下 "${f/doc/txt}"
帖子发表于 : 2008-12-09 10:25 

注册: 2007-04-29 13:15
帖子: 44
送出感谢: 0 次
接收感谢: 0 次
for f in *.doc ; do mv "$f" "${f/doc/txt}" .这是一个文件名后缀更改脚步,后面的用法很奇怪,谁能解析一下$,{},f/doc/txt这三个东西?


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 麻烦解析一下 "${f/doc/txt}"
帖子发表于 : 2008-12-09 10:28 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
将变量f值里面的doc替换成txt
ps这个是只替代第一个符合条件的,要全部替换可以${f//doc/txt}


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 麻烦解析一下 "${f/doc/txt}"
帖子发表于 : 2008-12-09 10:31 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
引用:
$们

$ 在正则表达式中作为行结束符.
$! 获取上一行进程的进程号。
$*,$@ 位置参数
$? 退出状态变量.$?保存一个命令/一个函数或者脚本本身的退出状态.
$$ 进程 ID 变量.这个$$变量保存运行脚本进程 ID
$# 参数个数
$0 运行程序本身的文件名
${!#} 最后一个参数
${#str} 字符串长度
${var/Pattern/Replacement}
使用 Replacement 来替换 var 中的第一个 Pattern 的匹配.
${var//Pattern/Replacement}
全局替换.在 var 中所有的匹配,都会用 Replacement 来替换.
${var/#Pattern/Replacement}
如果 var 的前缀匹配到了 Pattern,那么就用 Replacement 来替换 Pattern.
${var/%Pattern/Replacement}
如果 var 的后缀匹配到了 Pattern,那么就用 Replacement 来替换 Pattern.
${!varprefix*}, ${!varprefix@}
使用变量的前缀来匹配前边所有声明过的变量.
$RANDOM
$RANDOM 是 Bash 的内部函数(并不是常量),这个函数将返回一个范围在 0 - 32767 之间的一个伪随机整数
${x:-"$default_arg"}
参数替代,如果$x为空,则替代为$default_arg
${x#parttern}
删除第一个匹配parttern的字符串(从左边开始匹配,若#换成%则从右边开始)
${x##parttern}
删除所有匹配parttern的字符串(从左边开始匹配,若#换成%则从右边开始)


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 麻烦解析一下 "${f/doc/txt}"
帖子发表于 : 2008-12-09 10:42 

注册: 2007-04-29 13:15
帖子: 44
送出感谢: 0 次
接收感谢: 0 次
谢谢楼上. :em02


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 麻烦解析一下 "${f/doc/txt}"
帖子发表于 : 2008-12-09 11:43 

注册: 2008-05-24 1:24
帖子: 338
送出感谢: 0 次
接收感谢: 0 次
收下了,谢谢 :)


_________________
如果努力的目的是为了超越他人,那么我们永远成功不了
大道是平的,我们该做的是让自己快乐,同时带给他人快乐
好好涵养自己的性格
才华是刀刃,辛苦是磨刀石
多食果蔬,健康长寿;少吃不吃鱼肉,珍爱它类生命,远离自身疾病


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 麻烦解析一下 "${f/doc/txt}"
帖子发表于 : 2008-12-09 16:06 
头像

注册: 2007-07-05 2:48
帖子: 171
送出感谢: 0 次
接收感谢: 0 次
为了保险起见
替换后缀最好这样使用 ${f%.doc}.txt

代码:
[12-06 18:24> ~]# a=doc.a.b.doc
[12-06 18:24> ~]# echo ${a}
doc.a.b.doc
[12-06 18:24> ~]# echo ${a/doc/txt}
txt.a.b.doc
[12-06 18:24> ~]# echo ${a//doc/txt}
txt.a.b.txt
[12-06 18:24> ~]# echo ${a%.doc}
doc.a.b
[12-06 18:24> ~]# echo ${a%.doc}.txt
doc.a.b.txt


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 麻烦解析一下 "${f/doc/txt}"
帖子发表于 : 2008-12-09 22:16 

注册: 2008-12-04 18:21
帖子: 4
送出感谢: 0 次
接收感谢: 0 次
楼上的例子不错,很注意编程里的细节嘛!


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 麻烦解析一下 "${f/doc/txt}"
帖子发表于 : 2008-12-11 0:27 
头像

注册: 2007-07-05 2:48
帖子: 171
送出感谢: 0 次
接收感谢: 0 次
那要看自己是要处理一个一次性的具体问题
还是要写一个通用的脚本
如果是前者,随便怎样只要达到目的就行了,不管实现方式多么dirty
而若是后者,那就要考虑到很多特殊情况了


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 麻烦解析一下 "${f/doc/txt}"
帖子发表于 : 2008-12-12 15:03 
头像

注册: 2006-04-12 20:05
帖子: 8495
地址: 杭州
送出感谢: 0 次
接收感谢: 8
很好很强大~


_________________
关注我的blog: ε==3


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 9 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译