c - 在 c 中使用 popen 执行的 shell 脚本中不可见的环境变量
问题描述
有人可以帮忙吗:
我在 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 命令。
解决方案
如果你想用它oraenv
来修改当前的 shell 环境,你必须用. oraenv
;来调用它。否则环境更改将在子shell中进行。
这在 Oracle 文档中进行了解释。另请参阅 shell.
命令的文档,该命令在当前执行上下文中而不是在子 shell 中运行脚本。
推荐阅读
- process - 我如何等待其标准输出已通过管道传输到另一个的 Rust `Child` 进程?
- python - 如何比较两列并根据条件提取匹配项?
- java - 如何使用广播接收器在android和另一个进程之间进行通信
- c# - 如何解决 BotChat.App 未捕获的 ReferenceError?
- android - RecyclerView 和 Activity 之间的 Material Design 动画过渡
- angular - 如何在选择上简化 *ngFor
- highcharts - 带有表格和子任务的 Higcharts 甘特图
- c# - 如何向 Discord Webhooks C# 发送 POST 请求
- python - Pycopula 库输入
- python - 通过 discord py 发送 webhook 消息以克隆用户消息