与question 3451993相关,是否可以在Bash脚本中调用subst.c内部的函数(在Bash源代码中)?
答案 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中调用共享库中的例程。