用于这个bash文件名提取技术?

jjc*_*son 9 linux bash shell filenames operators

我有一个bash脚本的一部分,它获取一个没有扩展名的文件名,但我试图了解这里真正发生了什么.什么是"%%"的用途?有人可以详细说明bash在幕后做了什么吗?如何在一般基础上使用这种技术?

#!/bin/bash

for src in *.tif
    do
    txt=${src%%.*}
    tesseract ${src} ${txt}
    done
Run Code Online (Sandbox Code Playgroud)

Joh*_*iss 15

它摆脱了文件扩展名(共这里:.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
Run Code Online (Sandbox Code Playgroud)

来自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.
Run Code Online (Sandbox Code Playgroud)