首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过shell脚本将变量从父级传递到子shell

通过shell脚本将变量从父级传递到子shell
EN

Unix & Linux用户
提问于 2020-08-24 10:34:09
回答 2查看 4.5K关注 0票数 2

在父shell (root)上执行以下操作:

代码语言:javascript
运行
复制
SESSION_RECORD=started

输出

代码语言:javascript
运行
复制
echo $SESSION_RECORD
started

但是,当我从shell脚本中检查状态时,没有分配值。我知道它会创建一个子程序并执行脚本,这就是为什么它不接受变量的原因。

我是否可以将它从父shell导入子shell?我不想使用导出,因为根变量是动态的。

参考文献的

脚本:

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

session=`echo $SESSION_RECORD`
echo $session
if [ "$session" == "started" ]
then
echo "screen records"
else
echo "screen not started"
fi

基本上,我的脚本应该检查变量的值,如果它匹配,它应该进入循环并进一步执行命令。

变量SESSION_RECORD的值动态变化,因此根据该值,我需要运行一个脚本。

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2020-08-24 11:28:29

导出变量时不需要设置变量的值。你可以:

代码语言:javascript
运行
复制
SESSION_RECORD=started
echo "Now some other stuff"
export SESSION_RECORD && ./myscript

并且它将将SESSION_RECORD的当前值导出到脚本中。

票数 4
EN

Unix & Linux用户

发布于 2020-08-24 10:59:41

如果您让脚本成为一个函数,那么它在执行时不会创建子while,因此访问变量应该工作得很好。也许这对你有用?

示例:

代码语言:javascript
运行
复制
$ cat test.sh
#!/bin/bash

function foo() {
  echo $foo
}
$ source test.sh
$ foo=5
$ foo
5
$ foo=4
$ foo
4
$
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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