问题陈述:我需要将我的互联网账单压缩成pdf格式以便报销。为此,我使用以下脚本:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=com_01-Jun-2022 to 30-Jun-2022.pdf Downloads/InternetBills/01-Jun-2022 to 30-Jun-2022.pdf
为了使我的工作更容易,我在bashrc中创建了一个bash函数,如下所示
pdf_compress(){
mode=$1
in_file=$2
in_file_name=${in_file##*/}
out_file_name="compressed_${in_file_name}"
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/$mode -dNOPAUSE -dQUIET -dBATCH -sOutputFile=$out_file_name $2
}
终端运行命令
pdf_compress screen Downloads/InternetBills/01-Jun-2022 to 30-Jun-2022.pdf
输出错误
Error: /undefinedfilename in (to)
Operand stack:
Execution stack:
%interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push
Dictionary stack:
--dict:731/1123(ro)(G)-- --dict:0/20(G)-- --dict:75/200(L)--
Current allocation mode is local
Last OS error: No such file or directory
GPL Ghostscript 9.50: Unrecoverable error, exit code 1
我可以看到文件名中的空格正在创建问题。我的困惑是,在传递参数时,整个相对路径被作为单个参数,但是在bash函数中使用时,它不起作用。所以如何使用可能包含空格的路径参数?
在bash中可以解决这个问题的任何其他方法也是值得赞赏的。
你只需要在路径周围加上引号。