frmcmp 退出状态不应为 0

frmcmp exit status should not be 0

我正在尝试编写一个脚本来编译我应该开始维护的 Oracle 6i 应用程序(是的,太旧了)中的所有表单、报告、库和菜单,但我得到了菜单和尽管未能编译 .mmb 文件,但似乎 frmcmp 仍然 returns a 0。

以编译表格为例,我有:

for i in找到。 -名称'*.fmb' | awk-F。 '{ 打印 $2 }' do frmcmp userid=user/pass@database batch=yes module=/path$i.fmb module_type=form output_file=/path$i.fmx compile_all=yes window_state=minimize 2> errorcomform.log if [ ${?} != 0 ] then echo -e "${FALLA}FAILED${NORMAL}" fi done

这很好用,因为 ${?} returns 1 如果编译失败。但如果我尝试:

for i in找到。 -名称'*.mmb' | awk-F。 '{ 打印 $2 }' do frmcmp userid=user/pass@database batch=yes module=/path$i.mmb module_type=menu output_file=/path$i.mmx compile_all=yes window_state=minimize 2> errorcomform.log if [ ${?} != 0 ] then echo -e "${FALLA}FAILED${NORMAL}" fi done

如您所见,唯一的主要区别是 module type=form 的值更改为 menu

另外,errorcomform.log什么也没有写。

为了生成错误,我只是抓取任何其他文件(例如 .mmx 或任何文本文件)并将其更改为 .mmb,以便 find 可以找到它。尽管它没有生成 .mmx 文件,但似乎 frmcmp 仍然返回 0 并且没有显示错误消息。

有人知道这件事吗?由于这是一项过时的技术,google 没有给出很多回应。

提前致谢。

您应该检查是否有 .fmx 或 .mmx 或 .plx 文件。 如果不是这种情况,您可以假设编译失败。

我们也是这样用的,效果很好。