#!/bin/bash
FILES=src/*.erl
shopt -s nullglob
for f in $FILES
do
echo "Processing $f file..."
# ???
done
如何从完整路径中提取文件名?它是什么意思 - “pathfilename = $ {f%。*}”?
答案 0 :(得分:5)
我只需复制帮助输出,因为它有示例和所有内容。
~$ basename --help
Usage: basename NAME [SUFFIX]
or: basename OPTION
Print NAME with any leading directory components removed.
If specified, also remove a trailing SUFFIX.
--help display this help and exit
--version output version information and exit
Examples:
basename /usr/bin/sort Output "sort".
basename include/stdio.h .h Output "stdio".
答案 1 :(得分:2)
更新:我已经删除了我对第一部分的回答,因为显然我误解了被问到的内容。
您提到的语法pathfilename=${f%.*}
表示pathfilename
设置为$f
的值,其中.*
的最短匹配项从字符串末尾删除。这将从文件名中删除扩展名。 bash manual describes this syntax as follows:
$ {参数%字}
$ {参数%%字}
删除匹配的后缀模式。这个词被扩展为产生一个模式,就像路径名扩展一样。如果模式匹配参数展开值的尾部,那么展开的结果是具有最短匹配模式(“%”情况)或最长匹配模式(“%%”情况)的参数的扩展值)删除。如果参数是@或*,则模式删除操作依次应用于每个位置参数,并且扩展是结果列表。如果参数是使用@或*下标的数组变量,则模式删除操作依次应用于数组的每个成员,并且扩展是结果列表。