【发布时间】:2019-08-22 13:08:58
【问题描述】:
从我拥有的 Oracle Forms 10g 中,我尝试运行以下命令:
command:='fdisk -l | grep Disk ';
虽然这不会引发任何编译时错误,但似乎没有输出。但是,当我编辑如下相同的命令时,生成结果输出没有问题。
command:='fdisk' ;
我感觉在形成正确的命令字符串以供执行时我可能犯了一个错误。
任何帮助都会非常有帮助。
【问题讨论】:
从我拥有的 Oracle Forms 10g 中,我尝试运行以下命令:
command:='fdisk -l | grep Disk ';
虽然这不会引发任何编译时错误,但似乎没有输出。但是,当我编辑如下相同的命令时,生成结果输出没有问题。
command:='fdisk' ;
我感觉在形成正确的命令字符串以供执行时我可能犯了一个错误。
任何帮助都会非常有帮助。
【问题讨论】:
为了获得硬盘驱动器的数量和每个的容量,我正在寻找使命令起作用:
command:='fdisk -l | grep Disk ';
因为我做不到,所以我认为我需要启动下一个替代方案并编写一些额外的代码来获取我在 Oracle Forms 10g 中想要的信息。对于那些可能遇到类似问题的人来说,这可能会派上用场。以下是经过测试发现返回所需结果的代码部分。
command:='fdisk -l ';
process := WEBUTIL_HOST.Blocking(command);
stnd := WEBUTIL_HOST.Get_Standard_Output(process);
totalVal :=0;
If stnd.count >= 1 Then
For i in stnd.first .. stnd.last Loop
if(instr(UPPER(stnd(i)),UPPER('Disk /dev/sd'))>0) Then
firstPos := instr(stnd(i),'Disk /dev/',1)+length('Disk /dev/sda:')+1;
nextPos := instr(stnd(i),'GB',1);
diffPos := nextPos - firstPos;
extractPos := trim(substr(stnd(i),firstPos,diffPos));
totalVal := totalVal+to_number(extractPos,'999999.9999999');
end if;
End loop ;
我相信上面的内容可以使用模式匹配条件来完成,如果不是更优雅的话。
【讨论】: