如何从另一个函数访问Bash变量?

时间:2019-02-28 23:15:34

标签: bash function global-variables

我有一个Bash函数,其中包含一个我需要从另一个函数访问的变量。我该怎么做呢?

这里是一个例子:

#!/bin/bash 

function run_query() {
    sleep 5
    local -g DATA=$(curl "http://api.dictionary.words/?definition=program")
}

function display_data() {
    printf "%s\n" "$DATA"
}

run_query &
display_data

2 个答案:

答案 0 :(得分:0)

因此,我相信您在带有&的子外壳中将run_query作为后台进程运行。 因此,run_query和display数据不会在同一shell中运行,因此它们无法彼此访问变量。

只需尝试一下,

从run_query()内调用display_data

function display_data() {
    printf("%s\n" "$1")
}
export -f display_data 
function run_query() {
    sleep 5
    DATA="$(curl "some_url" --someoptions)"
    display_data "$DATA"
}
export -f run_query

答案 1 :(得分:0)

  

第一个功能每5秒运行一次,第二个功能运行   每秒,因为我不想每秒查询API。

然后,您可以每5秒查询一次

i=0
while :
do
    ((i++ % 5 == 0)) && data=$(curl "http://api.dictionary.words/?definition=program")
    printf '%s\n' "$data"
    sleep 1
done