我想使用 ps2pdf 压缩目录中的 PDF,但无法设置 for 循环。文件命名不断出现错误。
filelist=$(find . -name \*.pdf)
for i in "$filelist"; do
ps2pdf -dPDFSETTINGS=/ebook "$i"
done
变量用引号引起来是因为文件名包含空格。
如果目录中有一个文件,则脚本有效。如果目录中有多个文件,脚本将返回错误Error: /undefinedfilename in。
告诉我,可能是什么问题?
我想使用 ps2pdf 压缩目录中的 PDF,但无法设置 for 循环。文件命名不断出现错误。
filelist=$(find . -name \*.pdf)
for i in "$filelist"; do
ps2pdf -dPDFSETTINGS=/ebook "$i"
done
变量用引号引起来是因为文件名包含空格。
如果目录中有一个文件,则脚本有效。如果目录中有多个文件,脚本将返回错误Error: /undefinedfilename in。
告诉我,可能是什么问题?
当你将其放在
$filelist引号中时,它就变成了一个单词。因此,循环执行一次,其中循环变量等于找到的整个文件列表。因此出现未定义文件名错误。该怎么办?选项一,
ps2pdf在里面做find:选项二,使用
while read而不是for。默认情况下,find逐行返回文件名,而read一次读取一行。也就是说,在这样的循环中,将逐行处理行,而不是像在循环中那样处理单词for i in words:选项三:设置
IFS=$'\n'循环执行时间for i in words,使得单词被视为换行符之间的部分: