首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash:从"bash -c“调用函数

Bash:从"bash -c“调用函数
EN

Unix & Linux用户
提问于 2019-10-07 07:01:20
回答 2查看 1.2K关注 0票数 3

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

当前脚本:

代码语言:javascript
复制
#!/bin/bash

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

当前产出:

代码语言:javascript
复制
$ /tmp/test.sh 
one
bash: inner_function: command not found

期望产出:

代码语言:javascript
复制
one

two
EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2019-10-07 07:08:13

出口:

代码语言:javascript
复制
typeset -xf inner_function

示例:

代码语言:javascript
复制
#! /bin/bash
inner_function () { echo "$1"; }
outer_function () { bash -c "echo one; inner_function 'two'"; }
typeset -xf inner_function
outer_function

编写完全相同的东西的其他方法是export -f inner_functiondeclare -fx inner_function

请注意,导出的shell函数是a),这是一个仅使用bash的特性,在其他shell和b中不受支持)仍然存在争议,即使大多数bug都是自谢尔休克以来修复的。

票数 3
EN

Unix & Linux用户

发布于 2019-10-07 07:08:58

当我需要在几个脚本中使用相同的函数时,我把它放在一个侧面的“库”脚本文件中,并把它放在需要函数的脚本中(source the_lib_script. the_lib_script)。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/545464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档