gpt4 book ai didi

bash - 是否可以从 Perl 调用 bash 函数?

转载 作者:行者123 更新时间:2023-12-03 07:53:47 25 4
gpt4 key购买 nike

admin@admin:~$ function fun1() { echo "abc"; }
admin@admin:~$ fun1
abc

我想从 Perl 调用这个函数。

admin@admin:~$ perl -e 'fun1'
admin@admin:~$

没有输出。我需要做什么来运行我的 shell 函数和其他变量,否则 Perl 无法执行此操作?

最佳答案

可以在 bash 中导出函数,然后在子 shell 中调用

$ function fun1 { echo "abc"; }
$ export -f fun1
$ perl -wE'system "bash", "-c", "fun1"'

(其中 $ 表示 shell 提示符)

在 bash 5.1.8(1) 中测试


如果 shell 函数返回值(通过 echo-ing)并且 Perl 程序需要它们,则使用“反引号”(运算符形式的 qx)而不是 system

perl -we'$ret = qx(bash -c "f1 args-for-f1"); print $ret'

这会将一个(可能)多行字符串(包含所有输出行)分配给标量 $ret。或者

perl -we'@ret = qx ...'

将输出行作为 @ret 数组的元素。

参见How to call a function (defined in shell script) in a Perl script .

关于bash - 是否可以从 Perl 调用 bash 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76516936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com