linux – 循环点直到进程完成?巴什
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 循环点直到进程完成?巴什,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1425字,纯文字阅读大概需要3分钟。
内容图文
![linux – 循环点直到进程完成?巴什](/upload/InfoBanner/zyjiaocheng/961/0128519984524f94876e947f0e26ea10.jpg)
我正在尝试创建一个安装后的bash脚本,当我全新安装Ubuntu时我可以使用它.我想要的第一个功能是脚本提示用户是否要更新他们的系统,如果他们选择是,则显示单词“loading”,然后是循环点,直到过程完成并将输出导出到日志文件.我已设法实现所有这些功能,除了带点的循环.
#!/bin/bash
read -p "Update your system? [y/n]" RESP
if [ "$RESP" = "y" ] || [ "$RESP" = "Y" ] || [ "$RESP" = "Yes" ] || [ $RESP = "yes" ]; then
echo "Loading..." #dot loop to show that process is occurring
sudo apt-get update>>log.txt 2>&1 #when complete want the dots to stop looping.
echo $?>>log.txt 2>&1
echo "UPDATE COMPLETE">>log.txt 2>&1
echo "----------------------------------------------------------------------------------------------------------------------------------------------------">>log.txt 2>&1
echo "----------------------------------------------------------------------------------------------------------------------------------------------------">>log.txt 2>&1
echo "Status=$?"
echo "Done"
sleep 2
clear
else
echo "OK"
fi
解决方法:
#!/bin/bash
"$@" &
while kill -0 $!; do
printf '.' > /dev/tty
sleep 2
done
printf '\n' > /dev/tty
将其另存为名为run_with_dots的脚本.然后你可以这样做:
sudo ./run_with_dots apt-get update >>log.txt 2>&1
您可以传递任何命令,它将运行它并每两秒打印一次点,直到命令完成. “$@”&将脚本的参数视为要运行的命令,使用&在后台做它.它使用kill -0来检查进程是否仍在运行($!是后台进程的PID).由于您想要重定向stdout和stderr,因此这些点将打印到/ dev / tty.
内容总结
以上是互联网集市为您收集整理的linux – 循环点直到进程完成?巴什全部内容,希望文章能够帮你解决linux – 循环点直到进程完成?巴什所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。