我需要将一个函数从一个shell脚本添加到另一个shell脚本并启动它。 基本上,流程应该如下所示:
问题描述:
可能的解决方案:
首先解决方案是使用包含第二个文件。命令。 它看起来像这样:
$function=boo
su $userName -e -c ". $filePath; type -t $function"
if [ $? -eq 0 ];
then
su $userName -e -c ". $filePath; $function"
fi
这里我们切换到相应的用户并在main bash脚本中包含$ filePath。 我们还检查是否在该文件中定义了$ function,如果它可用,我们将启动它。 当$ filePath中的代码存在于任何函数之外时,问题就开始了。 Ash决定在每次include(。)操作期间运行它。这可能会导致问题。有没有办法在不运行代码的情况下导入其他文件函数?
我出来的第二个解决方案是使用sed过滤掉函数。
sed -e '/^boo()/,/^}/!d' $filepath
;
sed -e '/^boo() *{.*}[^$]*/!d' $filepath
;
第一个请求允许过滤函数boo()直到关闭括号。 第二个包括整个函数写在一行中的情况。 是否有可能使用一个正则表达式覆盖所有函数语法案例?
可能有另一种方法可以解决这个问题吗?