Bash:从“bash -c”调用函数

Bash:从“bash -c”调用函数

我试图让我的 bash 函数调用另一个使用bash -c.我们如何使脚本中先前创建的函数在不同的 bash 会话之间持续存在?

当前脚本:

#!/bin/bash

inner_function () {
    echo "$1"
    }
outer_function () {
    bash -c "echo one; inner_function 'two'"
    }
outer_function

电流输出:

$ /tmp/test.sh 
one
bash: inner_function: command not found

期望的输出:

one

two

答案1

导出它:

typeset -xf inner_function

例子:

#! /bin/bash
inner_function () { echo "$1"; }
outer_function () { bash -c "echo one; inner_function 'two'"; }
typeset -xf inner_function
outer_function

编写完全相同的内容的其他方法是export -f inner_functionor declare -fx inner_function

请注意,导出的 shell 函数是A)仅限 bash 的功能,其他 shell 不支持并且b)仍然存在争议,即使大多数错误都已修复炮弹休克症

答案2

当我在多个脚本中需要相同的函数时,我将其放在一个侧“库”脚本文件中,并将其“源”(source the_lib_script. the_lib_script)放在需要该函数的脚本中。

相关内容