如何解决通过ruby捕获shell脚本执行日志
| 我试图使用convert
命令将大量pdf文件转换为图像。我从文件夹中读取了所有包含pdf和html文件的文件,但是html文件具有扩展名“ .pdf \”。我从远程服务器收到了这些文件,所以我无法检查哪些文件是pdf文件,哪些不是。我使用以下代码:
%x[convert \"#{source_path}\" \"#{destination_path}\".jpg]
当“ 2”指向html文件时,返回以下错误:
GPL Ghostscript 8.60:无法恢复
错误,退出代码1转换:后记
代表失败/home/20100.pdf\': @
error/pdf.c/ReadPDFImage/645. convert:
missing an image filename
/ home / test / 20100-1.jpg \'@
错误/convert.c/ConvertImageCommand/2970。
成功错误:-file-中的/ syntaxerror
操作数堆栈:
执行堆栈:%interp_exit
.runexec2 --nostringval--
--nostringval-- --nostringval-- 2%stopped_push --nostringval--
--nostringval-- --nostringval--假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脚本是否正确执行?
解决方法
是的,检查
$?.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
,除了tokland的解决方案之外,如果不需要命令的返回值(但仅在其正常工作时),也可以使用system
:
>> system \'ls /etc/services\'
/etc/services
=> true
>> system \'ls /etc/failfail\'
ls: cannot access /etc/failfail: No such file or directory
=> false
,这只能将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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。