首页 > 解决方案 > 如何在 Oracle Forms 10g varchar2 变量中转义 Linux 字符串

问题描述

如果我无法清楚地提出我的问题,请原谅我。

我正在尝试从 Oracle Forms 10g 过程执行以下 Linux 命令:

ls -lact --full-time /etc |awk 'END {print $6,$7,$8}'

在程序中,我有以下内容:

command := ' ls -lact --full-time /etc |awk \'\END {print $6,$7,$8}  ';

当然,变量command是事先声明的。

我得到的错误是这样的:

预期以下之一时遇到符号“\”

对于解决此问题的任何帮助,我将不胜感激。

标签: oracleplsqloracle10goracleforms

解决方案


您可以通过将它们加倍来转义字符串值中的单引号:

command := 'ls -lact --full-time /etc |awk ''END {print $6,$7,$8}''';

或者更简洁一点,因为您不必修改原始文本(假设 Forms 支持这个!?)使用替代引用机制

command := q'[ls -lact --full-time /etc |awk 'END {print $6,$7,$8}']';

在这里,我用作[]分隔符,但它们可以是实际字符串中没有出现的任何字符:

如果开头的quote_delimiter是 、 、 或 之一[{那么<结尾(quote_delimiter必须是对应]的 、}>)。在所有其他情况下,开始和结束quote_delimiter必须是相同的字符。


推荐阅读