【发布时间】:2014-04-14 19:41:59
【问题描述】:
我有一个用户提供的脚本,例如
#!/bin/sh
some_function () {
touch some_file
}
some_other_function () {
touch some_other_file
}
我想从 c 代码调用函数 some_other_function。
我明白,我可以简单地编写一个类似的 shell 脚本
#!/bin/sh
source userscript.sh
some_other_function
并使用 system() 执行它,但我正在寻找一种更优雅,尤其是更通用的解决方案,它可以让我执行任意命名的函数,甚至可以让我获取/设置变量。
【问题讨论】:
-
c 不能动态加载解释代码
-
c 可以
exec一个外部程序/shell,所以exec('sh yourscript.sh foo bar baz');,基本上,foo bar baz成为外部脚本的参数。 -
你可以通过source bash然后调用函数来执行函数。例如
bash -c ". myfuncs.sh ; call_to_func arg1" -
/bin/sh不是bash(好吧,从技术上讲,它可能由bash提供,但不是一回事)。 -
@Steve Cox:我知道这一点。正如问题中所述,我已经以某种方式解决了这个问题。但我不想为我从 shellscript 调用的每个函数提供单独的 shellscript。我只是在寻找一种更优雅/更通用的方式来做到这一点。