在c

时间:2019-05-15 19:06:45

标签: c bash shell scripting popen

有人可以帮忙吗?

我正在c程序中使用popen执行shell脚本。像这样:

fd = popen("script1", "r");

script1代码如下:

#!/bin/sh
source script2     #loading another script2

EXE_SOMETHING   #Function call from script2

//Do something....

script2代码如下:

#!/bin/sh
function SET_ENV()
{
    oraenv <<-EOF
    SID NAME
    EOF
}

function EXE_SOMETHING()
{
    SET_ENV
    //Executing sql query using sqlplus to get output from database.
}

我的问题是我没有在EXE_SOMETHING中获取由SET_ENV函数设置的环境变量,由于该原因我找不到sqlplus命令。

1 个答案:

答案 0 :(得分:0)

如果要使用oraenv来修改当前的shell环境,则必须使用. oraenv来调用它;否则,将在子外壳中进行环境更改。

这在Oracle文档中进行了解释。另请参见shell .命令的文档,该命令在当前执行上下文中而不是在子shell中运行脚本。