关于shell语法 和shell进度条之间的事儿
来源:互联网 发布:linux dump 函数乱码 编辑:程序博客网 时间:2024/06/08 19:36
一、 shell脚本简单介绍
Shell脚本是一种弱类型的解释非编译型语言;
那么什么是弱类型?什么又是解释非编译型语言?
——即弱类型:没有数据类型,所有变量不需要定义直接使用即可,因为shell脚本把变量的内容当做字符串处理,这个不像C、C++语言,有int、char、double、float,因为这些语言都必须经过编译才可运行;
——解释非编译型语言:shell脚本不需要编译可直接运行;
为什么会这样呢?那是因为shell脚本将其脚本的解释器加入到内存,而后将shell文件当成命令行参数交给解释器,而后解释器对shell脚本内容逐行进行解析;
二、 shell脚本使用概括
1、在使用shell脚本之前先对其简单的熟悉以下:
在shell脚本中,对于#!/bin/bash而言:
其中“#”被称为‘shebang’:用于解释后面的解释器;
而“!/bin/bash”被称为解释器,所有的脚本语言都有属于自己的解释器,比如PHP、Python都有自己的解释器;
可以通过vim /etc/shells可以查看自己的电脑里面都有那些解释器;
下面是我自己电脑里面的自带解释器;
2、两种模式:
1) 交互式:在命令行输入一行,执行一行;
2) 批量式:把所有要执行的内容写在脚本里面;
3、Shell脚本执行方法:
运行原理:shell脚本在运行之前,必须加载解释权,然后用解释器运行它。
1) chmod u+x script.sh
./ script.sh
eg: chmod u+x shellbar.sh ./shellbar.sh
2) /bin/bash script.sh
eg: /bin/bash shellbar.sh
向下面的脚步执行就用的是第二种方法;
4、shell变量内容的提取方法
1)$+变量名
2)${变量名}
三、 shell语法
判断条件时:
对于字符串:==、!=;
对于整型:-eq、-ne、-lt、-le、-gt、-ge;
也可以使用:!(反)、-a(逻辑与)、-o(逻辑或)以及&&(相当于if…then )、||(相当于if not…then );
1、 条件测试:
测试为真该命令状态为0,否则为1;
1) [:是命令,根据退出码判断当前条件是否成立、各参数之间用空格隔开; eg:[ $i –le 100 ]
echo $?
2) test: 根据退出码判断当前条件是否成立、各参数之间用空格隔开;
eg:test $i –le 100 echo $?
2、 if/then/elif/fi:if条件判断的实它检测的命令执行的成功与否,根据退出码判断当前条件是否为真;
a) 代码块中不可为空;
b) If和[ 之间必须有空格;
c) If后的命令正确执行then之后的语句,否则指向elif/else/fi;
3、 case/esac:相当于c中的switch/case;
a) 只不过没有switch;
b) 用‘*)’代替default;
c) 用‘;;’替换break,表示跳出;
其格式如下:
case “$变量名” in 变量1) … ;; 变量2) … ;; … *) … ;;esac
4、 循环语句
1) for/do/done:
eg:for((i=0;i<100;i++))do echo $idone
2) while/do/done:
eg:while [ $i –le 100 ]do echo $idone
3) for…in:
eg:for i in 1 2 3 4 “hello” “c” 1234do echo $idone
4) for…in {变量范围}:
eg:for i in {a …z}do echo $idone
5) until 条件:在不管条件的情况下,先执行语句,直到不满足这个条件;
5、 特殊变量和位置参数:
1)$0:相当于main函数中的argv[0];
2)$1、$2
: 相当于main函数中的argv[1]、argv[2];
3)$#:参数个数;
4)$$
:所执行的shell脚本的进程号;
5)$@
:陈列各个参数的内容,多个参数内容之间用空格隔开;
6)$?:返回上一个命令的退出状态;
以下是实例:
四、 代码实现
下面是shell进度条的实现:
#!/bin/bash i=0; bbar= "" while [ $i -le 100 ] do printf "[%-100s][%d%%]\r" "$bbar" "$i" sleep 1 let i++ bbar+='#' done
以下是运行结果:
- 关于shell语法 和shell进度条之间的事儿
- Linux脚本编程/shell语法和shell进度条的编写
- shell语法及shell进度条
- shell语法及进度条
- Shell语法之进度条
- shell的基本语法以及shell进度条的编写
- shell语法及实现进度条
- Shell语法(脚本进度条)
- SHELL的语法和结构
- 关于终端,tty,shell之间的定义区别和关系
- shell 语法 shell命令 用shell编写进度条
- shell实现的进度条
- shell进度条的编写
- Shell下的进度条
- 关于shell的脚本编写的语法
- shell基本语法及实现彩色进度条
- shell进度条
- Shell 进度条
- viewpager实现轮播图效果,非常齐全
- phpstorm中ctrl+shift+f搜索全局键和输入法键冲突解决
- golang环境下的日志记录器-系列之三
- Eclipse中改动过Tomcat路径名后启动报错
- Java过滤器与SpringMVC拦截器之间的关系与区别
- 关于shell语法 和shell进度条之间的事儿
- GNS3连接VMware出现error could not execute vmrun:Command "C:\\program files (x86)\\vmwork\\vmrun.exe,'-T'
- 正则表达式
- 搭建SVN服务器(支持http)
- 【Natural Language Processing】seq2seq学习笔记
- 删除一个无头单链表的非尾节点
- js的ajax与jq的ajax总结
- nodejs对于json数据的引用
- ARP协议