通过ruby捕获shell脚本执行日志
我尝试使用 convert
命令将大量 pdf 文件转换为图像。我从我的文件夹中读取了所有文件,其中包含 pdf 和 html 文件,但 html 文件的扩展名为“.pdf”。我从远程服务器收到这些文件,所以我无法检查哪些文件是 pdf 文件,哪些不是。我使用了这段代码:
%x[convert "#{source_path}" "#{destination_path}".jpg]
当source_path
指向html文件时,返回以下错误:
GPL Ghostscript 8.60:不可恢复 错误,退出代码 1 转换:Postscript 委托失败
/home/20100.pdf':@ 错误/pdf.c/ReadPDFImage/645。转变: 缺少图像文件名
/home/test/20100-1.jpg'@ 错误/convert.c/ConvertImageCommand/2970。 成功错误:-file- 中的 /syntaxerror 操作数栈:执行堆栈:%interp_exit
.runexec2 --nostringval--
--nostringval-- --nostringval-- 2 %stopped_push --nostringval--
--nostringval-- --nostringval-- false 1 %stopped_push 1889 1
3%oparray_pop 1888 1 3
%oparray_pop 1872 1 3
%oparray_pop 1755 1 3
%oparray_pop --nostringval--
%errorexec_pop .runexec2
--nostringval-- --nostringval-- --nostringval-- 2 %stopped_push 字典堆栈:
--dict:1149/1684(ro)(G)-- --dict:0/20(G)-- --dict:70/200(L)-- 当前分配模式为本地 当前文件位置为 1
是否可以获取任何布尔值,或者有什么方法可以识别shell脚本是否正确执行?
I tried to convert a large number of pdf files to images using the convert
command. I read all files from my folder, which have pdf and html files, but html files have the extension ".pdf". I received those files from a remote server, so I can't check which files are pdf files and which are not. I used this code:
%x[convert "#{source_path}" "#{destination_path}".jpg]
When the source_path
points to an html file, the following error is returned:
GPL Ghostscript 8.60: Unrecoverable
error, exit code 1 convert: Postscript
delegate failed/home/20100.pdf': @
/home/test/20100-1.jpg' @
error/pdf.c/ReadPDFImage/645. convert:
missing an image filename
error/convert.c/ConvertImageCommand/2970.
Success Error: /syntaxerror in -file-
Operand stack:Execution stack: %interp_exit
.runexec2 --nostringval--
--nostringval-- --nostringval-- 2 %stopped_push --nostringval--
--nostringval-- --nostringval-- false 1 %stopped_push 1889 1
3 %oparray_pop 1888 1 3
%oparray_pop 1872 1 3
%oparray_pop 1755 1 3
%oparray_pop --nostringval--
%errorexec_pop .runexec2
--nostringval-- --nostringval-- --nostringval-- 2 %stopped_push Dictionary stack:
--dict:1149/1684(ro)(G)-- --dict:0/20(G)-- --dict:70/200(L)-- Current allocation mode is local
Current file position is 1
Is it possible to get any boolean value, or is there any way to identify whether the shell script executed correctly or not?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
是的,检查
$?.exitstatus
是否为 0。Yes, check if
$?.exitstatus
is 0.除了 tokland 的解决方案之外,如果您不需要命令的返回值(但前提是它正常工作),您还可以使用
system
:Besides tokland's solution, you can also use
system
, if you don't need the return value of the command (but only if it worked correctly):这应该只将 PDF 文件转换为 jpg。 (新文件的扩展名为 file.pdf.jpg)
或者这只会将 pdf 文件转换为 filename.jpg
this should convert only PDF files into jpg. (the new files will have extension file.pdf.jpg)
or this will convert only pdf files into filename.jpg