在Bash脚本中调用C函数

时间:2010-08-10 20:21:06

标签: c bash

question 3451993相关,是否可以在Bash脚本中调用subst.c内部的函数(在Bash源代码中)?

6 个答案:

答案 0 :(得分:5)

Bash支持可加载的内置。您可以利用它来做你想做的事。查看/usr/share/doc/bash/examples/loadables(或类似)目录中的文件。

答案 1 :(得分:3)

没有。

如果未将shell二进制文件导出为shell函数,则无法从shell访问shell二进制文件内部的函数。

答案 2 :(得分:2)

最简单的方法是编写一个简单的程序来收集输入,将其提供给函数,然后打印结果。你为什么不告诉我们你想要完成什么,也许我们可以建议一种更容易“给这只猫皮肤”的方法。

答案 3 :(得分:1)

不,你必须编写一个简短的C程序,编译它并从shell调用它。

答案 4 :(得分:1)

此代码看起来非常优雅:(来自here) 它与@Jay指出的解决方案相同。

bash$ cat testing.c 
#include <stdio.h>

char* say_hello()
{
   return "hello world";
}

float calc_xyzzy()
{
     return 6.234;
}

int main(int argc, char** argv)
{
   if (argc>1) {
      if (argv[1][0] =='1') {
        fprintf(stdout,"%s\n",say_hello());
      } else if ( argv[1][0] == '2') {
        fprintf(stdout,"%g\n",calc_xyzzy());
      }
    }
    return 0;
}
bash$ gcc -o testing testing.c 
bash$ ./testing 1
hello world
bash$ ./testing 2
6.234
bash$ var_1="$(./testing 1)"
bash$ var_2="$(./testing 2)"
bash$ echo $var_1
hello world
bash$ echo $var_2
6.234
bash$

答案 5 :(得分:0)

甚至可以使用C数据结构;)

这是ctypes.sh,它是bash的外部函数接口。 ctypes.sh是一个bash插件,可直接在您的Shell中提供外部功能接口。换句话说,它允许您从bash中调用共享库中的例程。

签出https://github.com/taviso/ctypes.sh;)