You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash脚本变量在Ghostscript命令中未正常展开的问题求助

问题原因与解决方法

你的脚本报错是因为手动添加的单引号被当成了文件名的一部分,而非Bash的语法引号。

具体原因

  • 执行$(printf "'%s' " "${FILES[@]}")时,Bash会将printf输出的内容(包括单引号)作为普通字符串拆分,传递给gs的参数是'content.pdf'和'another.pdf'(带单引号的文件名)。gs会尝试打开这些带单引号的文件,自然找不到,因此抛出/undefinedfilename错误。
  • 直接在终端执行命令时,单引号是Bash的语法符号,用来界定文件名边界,Bash会自动去掉单引号,将真实的文件名content.pdf传递给gs,所以命令能正常运行。

正确脚本

直接使用数组的展开语法即可,Bash会自动处理参数的正确传递:

FILES=("content.pdf" "another.pdf")
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile="output.pdf" -dAutoRotatePages=/None "${FILES[@]}"

补充说明

"${FILES[@]}"会将数组中的每个元素作为独立的命令参数传递,即使文件名包含空格也能正确处理,完全不需要手动添加引号。

内容的提问来源于stack exchange,提问作者olltsu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 13:35:25