我的实际目标是显示“正在加载...”,而另一个命令需要一些时间来输出。所以:
#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
命令完成(因为这就是它的作用$(...)
),这可能需要几秒钟,然后它会在后台做一件很快的事情(将该命令的输出分配给变量)。