我有一个 C++ 应用程序,我希望该应用程序始终使用源代码运行我的脚本之一。
我用了:
system("source myscript");
但它不起作用并且无法识别“源”命令。如果我省略“源”,myscript 将执行,但使用源它不起作用。
有没有在 C++ 中运行源命令的解决方案?
您不能调用source
using system
,因为它是 shell-builtin 而不是实际的可执行文件。
如果你想获取 shell 脚本的变量,你必须以另一种方式获取脚本中设置的变量。一种方法是编写一个包装脚本来获取您的脚本,然后简单地将所有导出的变量打印到标准输出。然后,您的 C 程序可以调用包装脚本,逐行迭代输出并将其每个环境变量设置为脚本输出的值(这假设包装脚本本身不产生任何输出)。
source
是一个shell命令,不是一个独立的程序。source
在当前 shell 中执行一个 shell 脚本,允许该脚本访问当前环境中的 shell 变量和函数。
您的 C++ 程序不是 shell,在您的 C++ 程序进程“内部”以完全不同的语言执行脚本是没有意义的。