【问题标题】:How to call shell script function in my Perl?如何在我的 Perl 中调用 shell 脚本函数?
【发布时间】:2020-04-30 18:31:46
【问题描述】:

我在util.sh中有一些函数,我想调用util.sh中的函数并获取返回值。 有人知道怎么做吗?

util.sh

#!/bin/bash
sayhello()
{
    echo $1 "hello"
}

我尝试使用以下命令在终端中调用该函数,但得到输出“找不到命令sayhello”:

sh /home/adnrew/code/test/util.sh sayhello test

并使用我的 perl 中的代码如下,

$returnvalue = system("/home/adnrew/code/test/util.sh sayhello test ");

也不行。

如何在我的 Perl 中调用 shell 脚本函数?

【问题讨论】:

  • 要从 Perl 脚本中执行此操作,请参阅this question的答案

标签: shell perl


【解决方案1】:

您可以通过

将 shell 脚本引入子进程
$returnvalue = system(". /home/adnrew/code/test/util.sh; sayhello test");

父进程(bash shell 或 perl 系统子进程)在尝试执行 bash shell 时会创建一个子 bash 进程。因此,脚本中定义的任何内容都仅限于子进程,不会反映在父进程本身中。 另一方面,获取脚本('dot' 命令或 source)会在同一个 bash 进程中运行定义。

【讨论】:

  • 可以得到返回值,也可以返回代码'0',是不是不能返回代码'0'??
  • @georgetovrea system 在一切正常时返回 0。如果返回非零,则该数字包含一些关于出错的信息。所以零是好的 :) 请参阅链接中的文档
猜你喜欢
  • 2012-03-08
  • 2018-12-02
  • 2011-03-13
  • 2012-04-15
  • 1970-01-01
  • 2014-06-05
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
相关资源
最近更新 更多