加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-14 02:12:01 所属栏目:Linux 来源:网络整理
导读:我有一个类似于以下的bash脚本: function test{ running=$(( $running - 1 ))}running=0test echo $running 因为测试功能在子shell中运行,所以它不会影响运行变量,并且我得到0回显到屏幕.我需要子shell才能更改父shell变量,如何做到这一点?我试过出口但无
我有一个类似于以下的bash脚本:

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

running=0
test &
echo $running

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

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

解决方法

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

见Can a shell script set environment variables of the calling shell?

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

#!/bin/bash

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

并将其调用为:

running=$(testSO)

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读