我正在尝试使用命令替换的结果设置几个环境变量。我想与&和并行运行命令wait。我目前所拥有的看起来像
export foo=`somecommand bar` &
export fizz=`somecommand baz` &
export rick=`somecommand morty` &
wait
Run Code Online (Sandbox Code Playgroud)
但显然在使用&变量赋值时不坚持。因此,在 之后wait,所有这些变量都未分配。
如何并行分配这些变量?
更新:这是我根据接受的答案最终使用的
declare -a data
declare -a output
declare -a processes
var_names=(
foo
fizz
rick
)
for name in "${var_names[@]}"
do
processes+=("./get_me_a_value_for $name")
done
index=0
for process in "${processes[@]}"; do
output+=("$(mktemp)")
${process} > ${output[$index]} &
index=$((index+1))
done
wait
index=0
for out in "${output[@]}"; do
val="$(<"${out}")"
rm -f "${out}"
export ${var_names[index]}="$val"
index=$((index+1))
done
unset data
unset output …Run Code Online (Sandbox Code Playgroud)