shell显示进度条
【1】参数($0、$?、$*、$@、$#、$$、$!)
$0:就是该bash文件名,个位数的,可直接使用数字,但两位数以上,则必须使用 {} 符号来括住,如${10}.
$?:是上一指令的返回值,成功是0,不成功是1。一般来说,UNIX(linux) 系统的进程以执行系统调用exit() 来结束的。这个回传值就是status值。回传给父进程,用来检查子进程的执行状态。一般指令程序倘若执行成功,其回传值为 0;失败为 1。
$*:所有脚本参数的内容:就是调用调用本bash shell的参数。
$@:基本上与上面相同。只不过是“$*”返回的是一个字符串,字符串中存在多外空格。 “$@”返回多个字符串。
$#:返回所有脚本参数的个数。
$$ :Shell本身的PID(ProcessID),即当前进程的PID。
$! :Shell最后运行的后台Process的PID
$- :使用Set命令设定的Flag一览
【案例实践】
(1)显示进度条
fun_wait(){ pid=`echo $!` count_tar=1 while [ -d /proc/$pid ] do count_tar=$(expr $count_tar + 1 ) for ((i=1;i<$count_tar;i++ )) do echo -n "." sleep 0.5 done done if [ $? -eq 0 ];then echo -e "\n" action "" /bin/true else echo -e "\n" action " " /bin/false exit 1 fi } main(){ tar -C /usr/local/ -zxf $mysql_tar& echo -n "tar -zxf $mysql_tar -C /usr/local ..." fun_wait elif [ "${mysql_tar##*.}" = "xz" ]; then xz -d $mysql_tar& echo -n "xz -dkf $mysql_tar ." fun_wait local_tmp_tar=${mysql_tar%.*} tar xf $local_tmp_tar -C /usr/local& echo -n "tar xf $local_tmp_tar -C /usr/local ." fun_wait }
效果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
2019-09-23 (5.3.2)数据库迁移——SSIS包批量导出