Linux:编写shell script的时候,怎么能出来进度条呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux:编写shell script的时候,怎么能出来进度条呢?相关的知识,希望对你有一定的参考价值。

就想用yum安装软件的时候都能看到进度条,我的shell script中有很多耗时的操作,希望能显示进度条,该如何操作呢?求解

#!/bin/bash
COUNTER=0
_R=0
_C=`tput cols`
_PROCEC=`tput cols`
tput cup $_C $_R
printf "["
while [ $COUNTER -lt 100 ]
do
COUNTER=`expr $COUNTER + 1`
sleep 0.1
printf "=>"
_R=`expr $_R + 1`
_C=`expr $_C + 1`
tput cup $_PROCEC 101
printf "]%d%%" $COUNTER
tput cup $_C $_R
done
printf "\n"
参考技术A qwfdsacfghrthg

鸟哥私房菜基础篇:学习 Shell Scripts习题

猫宁!!!

参考链接:http://cn.linux.vbird.org/linux_basic/0340bashshell-scripts.php

 

鸟哥是为中国信息技术发展做出巨大贡献的人。

 

1-请创建一支 script ,当你运行该 script 的时候,该 script 可以显示: 1. 你目前的身份 (用 whoami ) 2. 你目前所在的目录 (用 pwd)

 

#!/bin/bash

echo -e "Your name is ==> $(whoami)"

echo -e "The current directory is ==> $(pwd)"

 

2-请自行创建一支程序,该程序可以用来计算『你还有几天可以过生日』啊?

 

#!/bin/bash

read -p "Pleas input your birthday (MMDD, ex> 0709): " bir

now=`date +%m%d`

if [ "$bir" == "$now" ]; then

echo "Happy Birthday to you!!!"

elif [ "$bir" -gt "$now" ]; then

year=`date +%Y`

total_d=$(($((`date --date="$year$bir" +%s`-`date +%s`))/60/60/24))

echo "Your birthday will be $total_d later"

else

year=$((`date +%Y`+1))

total_d=$(($((`date --date="$year$bir" +%s`-`date +%s`))/60/60/24))

echo "Your birthday will be $total_d later"

fi

 

3-让使用者输入一个数字,程序可以由 1+2+3... 一直累加到使用者输入的数字为止。

 

#!/bin/bash

read -p "Please input an integer number: " number

i=0

s=0

while [ "$i" != "$number" ]

do

i=$(($i+1))

s=$(($s+$i))

done

echo "the result of ‘1+2+3+...$number‘ is ==> $s"

 

4-撰写一支程序,他的作用是: 1.) 先查看一下 /root/test/logical 这个名称是否存在; 2.) 若不存在,则创建一个文件,使用 touch 来创建,创建完成后离开; 3.) 如果存在的话,判断该名称是否为文件,若为文件则将之删除后创建一个目录,档名为 logical ,之后离开; 4.) 如果存在的话,而且该名称为目录,则移除此目录!

 

#!/bin/bash

if [ ! -e logical ]; then

touch logical

echo "Just make a file logical"

exit 1

elif [ -e logical ] && [ -f logical ]; then

rm logical

mkdir logical

echo "remove file ==> logical"

echo "and make directory logical"

exit 1

elif [ -e logical ] && [ -d logical ]; then

rm -rf logical

echo "remove directory ==> logical"

exit 1

else

echo "Does here have anything?"

fi

 

5-我们知道 /etc/passwd 里面以 : 来分隔,第一栏为帐号名称。请写一只程序,可以将 /etc/passwd 的第一栏取出,而且每一栏都以一行字串『The 1 account is "root" 』来显示,那个 1 表示行数。

 

#!/bin/bash

accounts=`cat /etc/passwd | cut -d‘:‘ -f1`

for account in $accounts

do

declare -i i=$i+1

echo "The $i account is \"$account\" "

done

 

以上是关于Linux:编写shell script的时候,怎么能出来进度条呢?的主要内容,如果未能解决你的问题,请参考以下文章

鸟哥的Linux私房菜之学习shell script

Linux shell script programming All In One

shell script执行的几种方式

我在Linux的主文件夹下写了一个shell script,为啥运行的时候提示:"No such file or directory"

鸟哥私房菜基础篇:学习 Shell Scripts习题

Linux系统shell脚本之统计文本