shell语法及进度条
来源:互联网 发布:php开源在线教育系统 编辑:程序博客网 时间:2024/06/10 19:01
shell语法
1.条件测试
- test和[
测试条件是否成立, 结果为真,退出码为0,否则为1(与c语言相反),不支持通配符和正则表达式
注:[ 与参数之间必须加空格
[[ ]]也可以用于条件测试,支持通配符和正则表达式
整数比较: -eq(相等)、-lt(小于)、-le(小于等于)、-gt(大于)、-ge(大于等于)、-ne(不等)
字符串比较:==(等于) !=(不等于)
$?用来判断退出码
#!/bin/bashval=5test $val -le 10echo $?[ $val -gt 10 ]echo $?
常见的测试命令:
[ -d DIR ] DIR存在且为目录则为真
[ -f FILE ] FILE存在且为普通文件则为真
[ -z str ] str长度为0则为真
[ -n str ] str长度非0则为真
与c语言相同,测试条件之间还可以做与、或、非逻辑运算
-a(与) -o(或) !(非)
如果str没有被定义,则shell会将其看做空字符串,会造成测试条件的语法错误。
- if/then/elif/else/fi
(1)if、else支持嵌套
(2)if语句中不允许出现空的代码块
(3):也是一条命令,什么也不做但恒成立
(4)if检测语句的退出码
(5)因为没有{},所以以fi结尾
read:等待用户输入一行字符串,将该字符串存到shell变量中
read val if [ $val -le 50 ]thenecho "A"elseecho "B"fi
&&和||也可以用在if中,用来连接两个测试条件
- case和esac
shell中的case语句可以匹配字符串和正则表达式,分支以;;结尾,找到匹配的分支并执行之后直接跳到esac之后。支持通配符和正则表达式
read val case $val in start | -s | -a) echo "start" ;; [Ss]top) echo "stop" ;; [0-9]) echo "hello" ;; *) echo "***********"esac
2.循环语句
- for/do/done
for (( i=0; i<10; i++ )) //(())括起来的内容,可以做c规范来操作do echo "$i"done
for i in {0..9}do echo "$i"done
- while/do/done
i=0while [ $i -lt 10 ]do echo "$i" (( i++ ))done
- until/do/done 直到条件不成立,否则一直做这件事情
i=0until [ $i -gt 10 ]do echo "$i" let i++ done
3.位置参数和特殊变量
$0-n 命令行参数
$# 命令行参数的个数减1
$@ 命令行参数的列表
$$ 当前shell的进程号
位置参数用shift左移 如: shift 1 $3就变成$2
4.函数
(1)shell中函数必须先定义再使用
(2)函数体的 { 和后面的命令之间必须有空格或换行,最后一条命令要和 } 写在一行,则必须加‘;’
(3)定义函数时并不执行里面的命令,到后面调用时才执行
(4)关键字function可以省略,()不可以省略,代码块不能为空
//求最大最小值function myfun(){ max=$1 min=$1 for i in $@ do if [ $min -ge $i ]; then min=$i fi if [ $max -le $i ]; then max=$i fi done}myfun $@ //调用函数,传参echo "max=$max"echo "min=$min"
5.数组
(1)bash支持一维数组,不限定数组大小,下标从0开始
(2)用括号表示数组,元素用空格分隔
(3)不会越界,没有类型
例:arr=(1 3.14 ‘c’ “hello world”)
提取数组元素: ${arr[i]},使用@或*可以获取数组中所有元素
shell编写进度条
#!/bin/bashi=0str=""arr=("|" "/" "-" "\\")while [ $i -le 100 ]do let index=i%4 printf "[%-100s][%d%%][%c]\r" "$str" "$i" "${arr[$index]}" //printf也是一条命令 sleep 0.1 let i++ str+='#' //字符串连接done
还有一种使用了简单配色方案的进度条
printf如下:
printf "[%-100s][%d%%][\e[54;41;1m%c\e[0m]\r" "$str" "$i" "${arr[$index]}"
- shell语法及进度条
- shell语法及shell进度条
- shell语法及实现进度条
- shell基本语法及实现彩色进度条
- Shell语法之进度条
- Shell语法(脚本进度条)
- shell 语法 shell命令 用shell编写进度条
- Linux脚本编程/shell语法和shell进度条的编写
- shell的基本语法以及shell进度条的编写
- 关于shell语法 和shell进度条之间的事儿
- shell基本语法及应用
- shell进度条
- Shell 进度条
- shell 进度条
- shell进度条
- shell进度条
- 进度条(shell)
- shell进度条
- 端口号相关
- 浮点数值转十六进制字符串
- HTML5新控件
- 类变量与实例变量的初始化过程
- [vue.js] prop验证没有错误信息的可能原因:没有使用开发者版本
- shell语法及进度条
- Vue2踩坑记-Eslint
- Websocket协议的学习、调研和实现
- android不透明度对应的值
- 伸缩盒(flex布局)
- 数据结构课程设计——英汉词典
- unknown database backend
- maven提交jar到私库
- numactl -H