shell实现一个简单进度条
程序员文章站
2022-06-17 19:38:05
shell简单语法
条件测试
用命令test或[ 测试一个条件是否成立。如果测试条件为真,命令的exit status为0,测试条件为假,exit status为1。
vc88l3n0cm9uzz...
shell简单语法
条件测试
用命令test或[ 测试一个条件是否成立。如果测试条件为真,命令的exit status为0,测试条件为假,exit status为1。
vc88l3n0cm9uzz48l3a+dqo8chjlignsyxnzpq=="brush:java;"> -lt//小于 -le//小于等于 -gt//大于 -ge//大于等于 -eq//等于 -ne//不等于
测试命令
与 或 非 的测试命令
分支语句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"