在bash函数内的命令中传递包含空格字符的参数



问题陈述:我需要将我的互联网账单压缩成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中可以解决这个问题的任何其他方法也是值得赞赏的。

你只需要在路径周围加上引号。

相关内容

  • 没有找到相关文章

最新更新