如何将命令的输出放入变量中的过程变成后台过程

如何将命令的输出放入变量中的过程变成后台过程

我的实际目标是显示“正在加载...”,而另一个命令需要一些时间来输出。所以:

#When running this, it takes about 3 seconds before it outputs something into the terminal.
deluge-console status

#I want to show "Loading..." in those 3 seconds.
#This was my plan:
unset output
output=$(deluge-console status) &
until [[ -n "$output" ]]
do
    echo "Loading..."
    sleep 1s
done
echo "$output"

执行时$(..) &会无休止地显示“正在加载...”。执行 $(... &) 不会显示“正在加载...”,而只是等待命令输出,然后回显 $ 输出。

我怎样才能让它工作?

答案1

您在这里所做的是deluge-console status从一个子 shell 开始,然后output在后台使用&该行末尾的将赋值给变量。

这当然不是你想要的:它会等到deluge-console status命令完成(因为这就是它的作用$(...)),这可能需要几秒钟,然后它会在后台做一件很快的事情(将该命令的输出分配给变量)。

相关内容