我正在创建一个代码,用于从科学论文中自动提取 bib
记录。
在旧版本的脚本中,我输入了存储所有 pdf 的文件夹的名称,现在我想给出一个正则表达式。例如。之前:
./AutoBib.sh 论文/
现在:
./Autobib.sh Papers/*.pdf
例如,文件夹中有 3 个 pdf 文件:Shrek.pdf、Fiona.pdf、Donkey.pdf,使用我的脚本我应该能够从所有文件中检索 doi 创建一个文件,其中列出了所有 doi 但执行我的脚本,它返回 first 文件的 doi,仅此而已。
这是我的代码:
for i in $1; do
doi $i
done
doi 是一个从 pdf 中提取 doi 并将其放入 txt 文件的函数。当我运行脚本时,它只返回第一个文件的 doi。
我如何在我的脚本中提供正则表达式并能够遍历与该正则表达式匹配的所有文件?
最佳答案
了解 Papers/*.pdf
不是正则表达式很重要,它是导致 bash
执行文件名扩展或 globbing 的通配符模式.
$1
表示脚本的第一个参数,因此您的 for
循环只会迭代那个参数。
使用$@
来表示所有参数:
for i in "$@"; do
doi "$i"
done
关于linux - 如何将正则表达式表示的文件列表输入给 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53979816/