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

}

效果:

  

 

posted @ 2022-09-23 20:16  郭大侠1  阅读(303)  评论(0编辑  收藏  举报