欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

shell实现一个简单进度条

程序员文章站 2022-03-09 07:50:26
shell简单语法 条件测试 用命令test或[ 测试一个条件是否成立。如果测试条件为真,命令的exit status为0,测试条件为假,exit status为1。 vc88l3n0cm9uzz...

shell简单语法

条件测试

用命令test或[ 测试一个条件是否成立。如果测试条件为真,命令的exit status为0,测试条件为假,exit status为1。
shell实现一个简单进度条

shell实现一个简单进度条vc88l3n0cm9uzz48l3a+dqo8chjlignsyxnzpq=="brush:java;"> -lt//小于 -le//小于等于 -gt//大于 -ge//大于等于 -eq//等于 -ne//不等于

测试命令
shell实现一个简单进度条

与 或 非 的测试命令
shell实现一个简单进度条

分支语句if/then/elif/else/fi

#!/bin/bash
read val 
if [ $val -eq 100 ]
then
    echo "true"
else
    echo "false"
fi

if可以添加对任何命令的检测,它是根据命令的退出码判断
if支持嵌套
if不能出现空的代码块

case…esac
可以检测所有语句包括正则表达式

#!/bin/bash
read op
case $op in
    start )
    echo "start"
    ;;
    stop )
    echo "stop"
    ;;
    restart )
    echo "restart"
    ;;
    * )
    echo "default"
esac

循环语句

for/do/done

#!/bin/bash
for i in {1..10}
do
    echo $i
done
#!/bin/bash
for(( i=1; i<10; i++))//当成c语言的语法来处理
do
    echo $i
done

while/do/done

#!/bin/bash
i=0
while [ $i -le 10 ]
do
    echo $i
    let i++
done

位置参数和特殊变量

$0//相当于c语言main函数的argv[0]
$1,$2,$3... //位置参数,相当于c语言main函数的argv[1],argv[2]...
$#//相当于main函数的argc-1
$@//表示参数列表“$1”"$2"...
$?//上一条命令的exit status
$$//当前shell的进程号

函数

#!/bin/bash
function fun()
{
    return $1

}
fun "$@"//传参
ret=$?//接受上一条命令的退出码
if [ $ret -eq 0 ]
then
    echo "success"
else
    echo "false"
fi

数组

arr=(1 2 3 "e" 5.34)//用空格隔开
echo ${arr[3]}//输出下标为3的
echo ${arr[@]}//将数组整体输出
echo ${arr[*]}//将数组个数作为变量输出


进度条实现

#!/bin/bash
i=0
bar=''
index=0
arr=( "|" "/" "-" "\\" )
while [ $i -le 100 ]
do
    let index=index%4
    printf "[%-100s][%d%%][\e[43;46;1m%c\e[0m]\r" "$bar" "$i" "${arr[$index]}"
    let i++
    let index++
    usleep 30000
    bar+='#'
done
printf "\n"

shell实现一个简单进度条