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)