繁体   English   中英

如何在父shell和子shell之间使用相同的bash变量

[英]How to use the same bash variable between a parent shell and child shell

我有一个类似于以下的bash脚本:


function test
{
   running=$(( $running - 1 ))
}

running=0
test &
echo $running

因为测试功能在子shell中运行,所以它不会影响运行变量,并且我得到0回显到屏幕。 我需要子shell才能更改父shell变量,如何做到这一点? 我试过出口但无济于事。

编辑感谢所有有用的答案,我想在后台运行此功能的原因是允许同时运行多个功能。 我需要能够回调父脚本,告诉它何时完成所有功能。 我一直在使用pid来做这个,但我不想检查循环中是否有多个进程不断存在。

你不能真的。 每个shell都有一个环境副本。

请参阅shell脚本可以设置调用shell的环境变量吗?

但是对于您在示例中所做的事情,请尝试将此作为您的脚本:

#!/bin/bash

function testSO
{    
    running=$(( $running - 1 ));
    return $running;
}

并将其调用为:

running=$(testSO)

如果您只想有效地返回一个值,那么只需返回该函数的值即可。

使用别名而不是函数。 或者使用函数体编写脚本并使用source执行它。

两种解决方案都避免创建子shell。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM