我试图调用一个传递标志的bash脚本,如下所示:

bash pdfgrep.ssh "STRING TO SEARCH" "FOLDER_TO_SCAN/*"

脚本:
pdfgrep -H "$1" "$2"

这导致:
poppler/error: Couldn't open file 'FOLDER_TO_SCRAN/*'

有什么想法吗?

最佳答案

当引用变量$2时,这会阻止 shell 扩展通配符。因此,您需要执行以下操作:

pdfgrep -H "$1" $2

但是,如果文件夹名称包含空格,则会出现问题,因为它还会进行单词拆分。如果允许原始 shell 扩展通配符会更好,方法是不引用脚本的参数:
bash pdfgrep.ssh "STRING TO SEARCH" FOLDER_TO_SCAN/*

然后,您需要更改脚本,以便将所有参数传递给pdfgrep,而不仅仅是前两个:
pdfgrep -H "$@"

现在我不确定脚本的目的是什么。它所做的只是将-H选项插入到开头,这样可以少键入bash pdfgrep.ssh

10-07 21:35