我有一部分bash脚本正在获得一个文件名,而不是扩展名,但是我正在想知道这里真正发生了什么.什么是“%%”?有人可以详细说明bash在幕后做什么吗?这种技术如何在一般的基础上使用?
#!/bin/bash for src in *.tif do txt=${src%%.*} tesseract ${src} ${txt} done
解决方法
它删除文件扩展名(这里:.tif),示例:
$for A in test.py test.sh test.xml test.xsl; do echo "$A: ${A%%.*}"; done test.py: test test.sh: test test.xml: test test.xsl: test
从bash手册:
${parameter%%word} The word is expanded to produce a pattern just as in pathname expansion. If the pattern matches a trailing portion of the expanded value of parameter,then the result of the expansion is the expanded value of parameter with the shortest matching pattern (the ``%'' case) or the longest matching pattern (the ``%%'' case) deleted. If parameter is @ or *,the pattern removal operation is applied to each positional parameter in turn,and the expansion is the resultant list. If parameter is an array variable subscripted with @ or *,the pattern removal operation is applied to each member of the array in turn,and the expansion is the resultant list.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。