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_datafunction 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