首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过fakeroot传递变量和函数

通过fakeroot传递变量和函数
EN

Unix & Linux用户
提问于 2021-07-11 13:49:47
回答 2查看 264关注 0票数 0

我想在一个项目中使用fakeroot,但是这个项目有很多函数和变量,我需要传递给fakeroot。

代码语言:javascript
复制
#!/bin/bash
myVar="foo"

function testFunction() {
    echo "$myVar"
}

fakeroot -- bash -c testFunction

但它不运行testFunction或回显myVar

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2021-07-25 12:44:12

好吧,我想出来了:

代码语言:javascript
复制
#!/bin/bash
myVar="foo"

function testFunction() {
    echo "$myVar"
}

tmp_function=$(declare -f testFunction)
fakeroot -- bash -c "$tmp_function; testFunction"
票数 0
EN

Unix & Linux用户

发布于 2021-07-25 14:04:57

您还可以使用bash的S导出函数功能。然而,考虑到fakeroot是一个sh脚本,您需要在一个sh实现不会像dash那样从环境中删除这些BASH_FUNC_fname%%变量的系统上。为了确保不会发生这种情况,您可以让bash本身将fakeroot解释为bash -o posix,这是一个sh解释器。

代码语言:javascript
复制
#!/bin/bash -
myVar="foo"

testFunction() {
    printf '%s\n' "$myVar"
}

export myVar
export -f testFunction

fakeroot=$(command -v fakeroot)
bash -o posix -- "${fakeroot:?fakeroot not found}" -- bash -c testFunction

请注意,还需要导出myVar才能使fakeroot启动的bash可用。您也可以在声明myVartestFunction之前发出一个set -o allexport,而不是同时为它们调用D17

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

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

复制
相关文章

相似问题

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