我正在尝试为mpeepdf自动化编写一个脚本。 我的脚本包括读取文件文件夹,并运行“for f in FILES”do。。。循环,从每个文件中提取js,还生成json报告,并将这些结果(js文件和json报告)分别输出到单独的文件夹中。 我试图做的是读取不带扩展名的文件名(success),并使用相同的文件名但具有不同扩展名(如.js或.json)将其输出到另一个文件夹。由于某些原因,JSON报告生成成功,但是,由于提取js的命令略有不同,每个包含空格或()或任何其他字符的文件都无法进行糟糕的处理。 我的代码片段:
for f in FILES
do
filename="$(basename "$f")"
reportname="${filename%%.*}.json"
jsoutput="${filename%%.*}.js"
REPORTOUTPUT=/home/parallels/randomfolder/reports/"$reportname"
JSOUTPUT=/home/parallels/randomfolder/extract-js/"$jsoutput"
mpeepdf -flm "$f" -j "$REPORTOUTPUT"
mpeepdf -flm "$f" -C "extract js > '$JSOUTPUT'" /// the problematic part is here. i know this is wrong > explanation below...
done
所以我认为有问题的部分主要与引用有关。要成功读取文件并正确指定报告输出,命令应如下所示:(手动测试,工作正常)
mpeepdf -flm 'file name with spaces and symbols.pdf' -C "extract js > 'file name with spaces and quotes.js'"
我感到困惑,因为将"$f"
放在单引号中不会读取文件名(因为里面的所有内容都作为一个字符串读取,而不解释符号)。不过,这似乎不是问题,因为生成json报告时读取和输出文件名的方式是正常的。问题在于extractjs命令。请注意extract js > path
必须用引号括起来,否则像这样的命令无法理解该命令-C
指定交互式mpeepdf模式下的命令
注意。我对bash脚本和linux没有经验,这是我第一次尝试(失败了,失败了…)。请善待我
也许您应该先构造命令字符串,然后使用
eval
来执行它,如下所示:这对我来说似乎很有用
相关问题 更多 >
编程相关推荐