我有一个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
答案 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