2017-10-09 130 views
1

我已经看到了类似的帖子在stackoverflow和其他网站,但我找不到解决我的问题。函数从linux的shell脚本不执行在c程序

我有以下consoleout.sh文件:

#!/bin/sh 

#this way works in c: 
#echo "Hello World!" 

#but in function does not work: 
a(){ 
    echo "Hello World!" 
} 

下面的C代码:

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    system(". consoleout.sh"); 

    system("a"); 
    return 0; 
} 

没有system("./consoleout.sh"),它工作正常。

+1

你确定你想在这样的情况下使用'system'或代码的程序用C? –

回答

3

每个system都调用一个新的shell实例,第二个不知道第一个定义的函数。你可以,但是,请致电第一壳的功能:

system(". consoleout.sh ; a"); 
4

system()调用一个壳,并等待其终止。另一个电话system()将创建一个从头开始的不同的shell。

要运行你的shell功能,你需要从它被定义外壳做:

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    return system(". consoleout.sh; a"); 
}