8
我有這樣的代碼:出口不工作(從叫了它的回聲功能)
#!/usr/bin/env bash
test_this(){
export ABC="ABC"
echo "some output"
}
final_output="the otput is $(test_this)"
echo "$ABC"
不幸的是,變量ABC
沒有被設置。
我有打電話給test_this
這樣的,因爲在我的真正的程序,我給一些參數,它執行各種複雜的操作調用各種其他功能,在途中出口這樣或那樣的(立足於這些參數),和最後一些輸出字符串被組裝以返回。調用它兩次,一次獲取輸出,一次輸出字符串會很糟糕。
現在的問題是:我能做些什麼來使輸出和輸出字符串都到位,但只需調用一次這樣的函數?
,我很高興與答案(謝謝paxdiablo):
#!/usr/bin/env bash
test_this(){
export ABC="ABC"
export A_VERY_OBSCURE_NAME="some output"
}
test_this
final_output="the otput is $A_VERY_OBSCURE_NAME"
echo "$ABC" #works!
unset A_VERY_OBSCURE_NAME
感謝您的洞察,但它不幫助我。有沒有一種方法可以調用或更改此函數,以便實際獲得外部輸出? – robert
@robert:查看更新。你真正的問題是'$()'必然會創建一個子進程,所以任何環境變化都將限制在那個子進程中。如果您直接調用該函數,則可能會影響當前的進程環境。 – paxdiablo
謝謝,我帶着第二個選項,最後加入:unset OUTPUT。 – robert