簡體   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