|
一、shell脚本语言
1.编程语言的分类:
(1)根据运行方式
编译运行:源代码 --> 编译器 (编译)--> 程序文件;
解释运行:源代码 --> 运行时启动解释器,由解释器边解释边运行;
(2)根据其编程过程中功能的实现是调用库还是调用外部的程序文件:
shell脚本编程:利用系统上的命令及编程组件进行编程;
完整编程:利用库或编程组件进行编程;
(3)编程模型:
过程式编程语言:以指令为中心来组织代码,数据是服务于代码;
顺序执行、选择执行、循环执行;代表:C,bash
面向对象的编程语言:以数据为中心来组织代码,围绕数据来组织指令;
类(class):实例化对象,method;
代表:Java, C++, Python
总结:shell脚本编程是过程式编程,解释运行,依赖于外部程序文件运行;
2.shell脚本格式和规范
(1)第一行,顶格:给出shebang,解释器路径
用于指明解释执行当前脚本的解释器程序文件
常见的解释器:
#!/bin/bash;#!/usr/bin/python;#!/usr/bin/perl
(2)注释信息:#
#description:;#version;#author;#date
(3)代码注释:
(4)缩进,适度添加空白行;
(5)txt格式文本文档
3.shell脚本本质:命令的堆积;
很多命令不具有幂等性,需要用程序逻辑来判断运行条件是否满足
4.运行脚本方法
(1)赋予执行权限,并直接运行此程序文件;
1)chmod +x /PATH/TO/SCRIPT_FILE
(此处直接+x是赋予全部用户可执行权限)
2)/PATH/TO/SCRIPT_FILE
(2)直接运行解释器,将脚本以命令行参数传递给解释器程序;
bash /PATH/TO/SCRIPT_FILE
(此方法和脚本本省有无执行权限无关)
注意:1)脚本中的空白行会被解释器忽略;
2)空白行表示:加一行echo,则显示为空白行
3)注释行:除shebang,余下所有以#开头的行,都会被视作)注释行而被忽略
4)shell脚本的运行是通过运行一个子shell进程实现的;
二、算数运算
1.算数符号: +,-,*,/, **, %
2.加法运算格式
(1) let VAR=算术运算表达式
(2) VAR=$[算数运算表达式]
(3) VAR=$((算数运算表达式))
(4) expr命令 :VAR=$(expr $ARG1 $OP $ARG2)
注意:乘法符号(*)在有些场景中需要使用转义符,防止和通配符、正则表达式冲突
3.增强型赋值:变量做某种算术运算后回存至此变量中
(1)let i=$i+# let i+=#
+=,-=,*=, /=, %=
(2)自增
VAR=$[$VAR+1];let VAR+=1;let VAR++
(3)自减
VAR=$[$VAR-1];let VAR-=1;let VAR--
三、传递参数
1.位置参数变量
(1)# myscript.sh argu1 argu2
引用方式:$1, $2, ..., ${10}, ${11}, ...
$1:第一个输入参数
$2第二个传递的参数
当两位数时要用括号括起来${10}, ${11}, ..
(2)轮替机制:调用n个位置变量
shift [n]:位置参数轮替;每次剔除n个,默认为1个
2.特殊变量
$0 脚本本身路径
$#脚本参数的个数
$*显示所有参数,各参数读成多个独立字符串
$@显示所有参数,各参数读成一个完整的字符串形式
3.read:用户交互,通过键盘输入数据,从而完成变量赋值操作
read [option]... [变量name ...]
-p 'PROMPT' 显示提示信息
-t TIMEOUT 超出时间提前结束
time out and return failure if a complete line of input is not read withint TIMEOUT seconds.
注意:一般输入以空格作为分隔符,但时当输入数量大于变量是,最后多余的全部赋予最后一个变量
四、条件测试
1.条件测试:判断某需求是否满足,需要由测试机制来实现
2.测试表达式编写语法
(1)执行命令,并利用命令状态返回值来判断;
0:成功
1-255:失败
(2)测试表达式
test EXPRESSION
[ EXPRESSION ]
` EXPRESSION `
注意:EXPRESSION两端必须有空白字符,否则为语法错误;
3.bash的测试类型
(1)数值测试:数值比较,双目测试
-eq:是否等于; [ $num1 -eq $num2 ]
-ne:是否不等于;
-gt:是否大于;
-ge:是否大于等于;
-lt:是否小于;
-le:是否小于等于;
(2)字符串测试:双目测试
==:是否等于;
>:是否大于;
|
|
|