【发布时间】:2019-05-15 19:06:44
【问题描述】:
有人可以帮忙吗:
我在 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 命令。
【问题讨论】:
-
这可能与
script2在EXE_SOMETHING()中所做的事情有关。通常,一些环境变量与进程/会话相关联,EXE_SOMETHING()中需要它们的部分(例如其他popen调用等)将被加载到不存在这些环境变量的新环境中。SET_ENV()和EXE_SOMETHING()的内容能不能具体点?
标签: c bash shell scripting popen