通过ruby捕获shell脚本执行日志

发布于 2024-11-07 07:07:21 字数 1125 浏览 0 评论 0原文

我尝试使用 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': @
error/pdf.c/ReadPDFImage/645. convert:
missing an image filename
/home/test/20100-1.jpg' @
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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

帅气称霸 2024-11-14 07:07:21

是的,检查 $?.exitstatus 是否为 0。

>> %x{ls /etc/services}
=> "/etc/services\n"
>> $?.exitstatus
=> 0

>> %x{ls failfail}
ls: cannot access failfail: No such file or directory
=> ""
>> $?.exitstatus
=> 2

Yes, check if $?.exitstatus is 0.

>> %x{ls /etc/services}
=> "/etc/services\n"
>> $?.exitstatus
=> 0

>> %x{ls failfail}
ls: cannot access failfail: No such file or directory
=> ""
>> $?.exitstatus
=> 2
还在原地等你 2024-11-14 07:07:21

除了 tokland 的解决方案之外,如果您不需要命令的返回值(但前提是它正常工作),您还可以使用 system

>> system 'ls /etc/services'
/etc/services
=> true
>> system 'ls /etc/failfail'
ls: cannot access /etc/failfail: No such file or directory
=> false

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):

>> system 'ls /etc/services'
/etc/services
=> true
>> system 'ls /etc/failfail'
ls: cannot access /etc/failfail: No such file or directory
=> false
半暖夏伤 2024-11-14 07:07:21

这应该只将 PDF 文件转换为 jpg。 (新文件的扩展名为 file.pdf.jpg)

ls -1 | xargs file | grep ': PDF document,' | sed 's/:.*//' | xargs -I % convert % %.jpg

或者这只会将 pdf 文件转换为 filename.jpg

ls -1 | xargs file | grep ': PDF document,' | sed 's/:.*//' | while read file; do b=`basename $file .pdf`; convert $file $b.jpg; done

this should convert only PDF files into jpg. (the new files will have extension file.pdf.jpg)

ls -1 | xargs file | grep ': PDF document,' | sed 's/:.*//' | xargs -I % convert % %.jpg

or this will convert only pdf files into filename.jpg

ls -1 | xargs file | grep ': PDF document,' | sed 's/:.*//' | while read file; do b=`basename $file .pdf`; convert $file $b.jpg; done
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文