我目前正试图弄清楚如何让bash在屏幕上绘制一系列点(有点像进度指示器),直到命令完成执行。例如,假设我想为wget下载绘制点:
wget -s http://url.tar.gz
until "above command has finished executing"; do
echo -n "."
sleep 0.05s
done
我可以使用" $!"或" $?"帮助解决这个问题?
感谢您的帮助!
答案 0 :(得分:3)
这将打印点,直到wget
完成:
while sleep 0.1; do printf "."; done &
wget -q http://url.tar.gz
kill $!
echo ""
wget
有自己的进度指标。以上使用-q
将其关闭。
答案 1 :(得分:2)
感谢Squirrel,我能够解决这个问题。他向我指出了一个我重复的帖子shell - get exit code of background process。通过在我的脚本中添加以下内容,我能够按照我希望的方式运行:
wget -q http://url.example.com.tar.bz2 &
wget_pid=$!
while [ -d /proc/$wget_pid ]; do
echo -n "."
sleep 0.01s
done