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



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

这是一个示例:

#!/bin/bash 
function run_query() {
    sleep 5
    local -g DATA=$(curl "http://api.dictionary.words/?definition=program")
}
function display_data() {
    printf "%sn" "$DATA"
}
run_query &
display_data

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

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

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

,所以我相信您正在使用&的子壳中运行run_query作为背景过程。因此,run_query和显示数据没有在同一外壳中运行,因此它们无法访问彼此的变量。

只是可以尝试的东西,

从run_query()

中调用display_data
function display_data() {
    printf("%sn" "$1")
}
export -f display_data 
function run_query() {
    sleep 5
    DATA="$(curl "some_url" --someoptions)"
    display_data "$DATA"
}
export -f run_query

相关内容

  • 没有找到相关文章