加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 使用这个bash文件名提取技术?

发布时间:2020-12-13 19:42:36 所属栏目:Linux 来源:网络整理
导读:我有一部分bash脚本正在获得一个文件名,而不是扩展名,但是我正在想知道这里真正发生了什么.什么是“%%”?有人可以详细说明bash在幕后做什么吗?这种技术如何在一般的基础上使用? #!/bin/bashfor src in *.tif do txt=${src%%.*} tesseract ${src} ${txt} d
我有一部分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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读