程序是由指令加数据组成
编程风格分为过程式和对象时
过程式:以指令为中心,数据服务于指令,适合小型程序
对象式:以数据为中心,指令服务于数据,社和大型程序
高级语言的执行方式分为编译型和解释型
编译型:先将高级语言通过编译器编译成二进制代码再执行
解释型:程序编写完成后不转换成二进制代码,在使用时才通过解释器解释运行,不生成二进制程序
shell就是一种解释器
程序的执行分为顺序执行,循环执行,条件执行
bash –n:检测脚本语法错误
bash –x:对脚本进行调试执行
PATH:默认不包括当前目录,要想直接执行脚本,除了要有执行权限,目录权限外还要写路径或将脚本所在路径加入PATH中
设置变量时使用 变量名=变量内容
注意:变量内容默认是字符型,变量内容有空格要用双引号引起来,变量名第一位不能是数字
删除变量时使用后 unset 变量名
bash是弱类型,变量无需事先定义,默认为字符型,参与运算时会自动进行隐式转换,不支持浮点式
变量命名规则:
不能使用程序保留字,如if,for等
只能使用字母,数字,下划线,不能数字开头
见命知意
统一命名规则
小驼峰:第一个单词首字母小写,其余首字母大写
大驼峰:所有单词首字母大写
set命令可以查询所有变量 env可以查询所有环境变量
各种变量范围
本地变量:对当前shell进程有效,对其他shell或当前shell子shell无效
环境变量:对当前shell及子shell有效
局部变量:对当前shell某片断有效
位置变量:$1,$2…..让脚本可以在代码中调用命令行中的参数
特殊变量:
$#:传递给脚本的参数个数
$1:传递给脚本的第一个参数
$@:传递给脚本的所有参数
$*:传递给脚本的所有参数(与$@相比,在加””情况下$*是把所有参数作为一个整体,$@是把每一个参数都单独列出来)
$?:上调命令执行结果
注:$10会被系统识别为$1 0
引用变量时要加$或者${}
定义环境变量可以使用export 或者declear –x
环境变量可以在定义时就声明或在定义普通变量后再进行声明
只读变量可以使用readonly 或者 declear –r
短路与: 第一个为0,后面不用继续运行 第一个为1,第二个必须要参与运算;
短路或: 第一个为1,后面不用继续运行 第一个为0,第二个必须要参与运算;
异或:^ 异或的两个值,相同为假,不同为真
实现算术运算:
1. let var=算术表达式
2.var=$[算术表达式]
3.var=$((算术表达式))
4.var=$(expr arg1 arg2 arg3 …)
5. declare –i var = 数值
6. echo ‘算术表达式’ | bc
bash中的测试指令 test或 []或[[]]
数值比较:
gt:大于
ge:大于等于
lt:小于
le:小于等于
eq:等于
ne:不等于
字符串比较:
==:等于
!=:不等于
=~:前面的字符串能被后面的表达式所匹配(一般用在[[]]中)
>:大于
<:小于(<>比较的是字符的ascii码)
-z:字符串是否为空
-n:字符串是否为非空
存在性及类别测试
-e:文件是否存在
-b:文件是否为块设备文件
-c:文件是否为字符设备文件
-d:文件是否为目录文件
-f:文件是否为普通文件(包括了链接文件)
-p:文件是否为管道文件
-h/-L:文件是否为符号链接文件
-S:文件是否为套接字文件
-s:文件是是否存在且非空
-O:当前用户是否为该文件属主
-G:当前用户是否为该文件属组
-N:文件自上一次被读取后是否被修改过
双目测试:
#1-ef #2:两个文件是否指向同一个inode
#1-nt #2:文件1是否新与文件2
#1-ot #2: 文件1是否旧与文件2
组和测试
&&:并且
||:或者
!:非
#1& = [ #1 –a #2 ]
#1||#2 = [ #1 –o #2 ]
注:正则表达式需要写在[[]]中,而-a,-o则不支持[[]]
使用bash运行脚本相当于打开一个子shell运行
.或source相当于在当前shell运行命令
if语句使用方式
单分支:
if 判断条件;then
代码
else
代码
fi
多分支:
if 判断条件;then
代码
elif判断条件;then
代码
……
else
代码
fi
raad命令可以实现交互式输入变量
read –p:可以输出提示信息并接受变量
read –t:指定命令输入时间
case命令用法(case支持glob通配符):
case $变量 in
判断条件)
分支1
;;
判断条件)
分支2
;;
……….
*)
默认分支
;;
esac
循环执行:将代码重复运行多次
for循环用法(比较适合数字)
for 变量名 in 列表;do
循环体
done
依次将列表中元素赋给变量,每次赋值后就执行循环体,知道列表中元素耗尽
列表生成方法:
1、直接给出
2、整数列表 {start…end} $(seq [start end])
3、返回到列表的命令
4、使用通配符
5、变量引用
while循环用法
while 条件;do
循环体
done
进入循环前要先判断条件是否成立,每次循环后再次进行判断,直到条件不满足为止
判断条件中一般应有循环控制变量,该变量会随着循环体进行而修正
until循环用法
until 条件;do
循环体
done
进入循环前要先判断条件是否成立,不成立进入循环,成立则跳过
break:退出当前循环
exit:退出当前shell
continue:结束当次循环,继续下次循环
原创文章,作者:zzzzz1357x1,如若转载,请注明出处:http://www.178linux.com/36831
评论列表(1条)
脚本语法需要总结好,更重要的是多写多练,作业需要好好完成呢