脚本编程详解
编程语言的分类:根据运行方式
1、编译运行:源代码 --> 编译器 (编译)--> 程序文件
2、解释运行:源代码 --> 运行时启动解释器,由解释器边解释边运行
根据其编程过程中功能的实现是调用库还是调用外部的程序文件:
1、shell脚本编程:利用系统上的命令及编程组件进行编程
2、完整编程:利用库或编程组件进行编程
编程模型:过程式编程语言,面向对象的编程语言
程序=指令+数据
1、过程式:以指令为中心来组织代码,数据是服务于代码;
顺序执行
选择执行
循环执行
代表:C,bash
2、对象式:以数据为中心来组织代码,围绕数据来组织指令;
类(class):实例化对象,method;
代表:Java, C++, Python
名词解释
变量:
1、局部变量
2、本地变量
3、环境变量
4、位置参数变量
5、特殊变量
具体参考:
https://blog.csdn.net/weixin_44983653/article/details/95232625
位置参数变量 :主要是向脚本传递参数。
# myscript.sh argu1 argu2
引用方式:
argu1 argu2
$1, $2, ..., ${10}, ${11}, ...
轮替:
shift [n]:位置参数轮替
示例:
root@LeeMumu:~# cat echo.sh # 通过此脚本,了解位置参数变量
#!/bin/bash
echo $1
echo $2
root@LeeMumu:~# ./echo.sh "The line 1." "The line 2."
The line 1.
The line 2.
$0:脚本文件路径本身
$#:脚本参数的个数
$*:所有参数
$@:所有参数
常用的算术运算符号:
1、+ 加
2、- 减
3、* 乘
4、/ 除
5、** 次方
6、% 余数
算术运算格式:
1、let VAR=算术运算表达式
2、VAR=$[算术运算表达式]
3、VAR=$((算术运算表达式))
# 给变量空间赋值时一定要使用 $[ ] 或者 $(( ))
4、VAR=$(expr $ARG1 $OP $ARG2)
# (): 括号内部是运行命令,直接取命令运行结果
# 注意:乘法符号在有些场景中需要使用转义符。
增强型赋值:
变量做某种算术运算后回存至此变量中,如下两种赋值方式表示同一个意思:
let i=$i+#
let i+=#
常用的增强型赋值:
+=,-=,*=, /=, %=
自增:
VAR=$[$VAR+1]
# 前面的 VAR 是变量空间,后面的 $VAR 是直接取变量空间里的值,注意区分
let VAR+=1
let VAR++
自减:
VAR=$[$VAR-1]
let VAR-=1
let VAR--
%(余数) 示例:
root@LeeMumu:~# yushu=$((9%2))
root@LeeMumu:~# echo $yushu
1
root@LeeMumu:~# yushu=$((8%2))
root@LeeMumu:~# echo $yushu
0
shell 脚本
1、什么是 shell 脚本?
1、shell 脚本是过程式编程,解释运行,依赖于外部程序文件运行。
2、shell 脚本是命令的堆积。
# 很多命令不具有幂等性,需要用程序逻辑来判断运行条件是否满足,以避免其运行中发生错误。
2、如何编写 shell 脚本?
脚本文件的第一行,顶格位置需要给出:
shebang,解释器路径,用于指明解释执行当前脚本的解释器程序文件。
常见的解释器:
#!/bin/bash
#!/usr/bin/python
#!/usr/bin/perl
同时,在脚本顶部还可以加入版本、作者和描述等信息,如下:
#!/bin/bash
# Version: 0.0.1
# Author: LeeMumu
# Description: XXX
3、如何运行 shell 脚本?
(1) 赋予执行权限,并直接运行此程序文件
chmod +x /PATH/TO/SCRIPT_FILE
source /PATH/TO/SCRIPT_FILE
(2) 直接运行解释器,将脚本以命令行参数传递给解释器程序
bash /PATH/TO/SCRIPT_FILE
4、shell 脚本注意事项:
(1) 脚本中的空白行会被解释器忽略
(2) 脚本中,除了shebang,余下所有以#开头的行,都会被视作注释行而被忽略;此即为注释行
(3) shell 脚本的运行是通过运行一个子shell进程实现的
脚本中的条件测试
条件测试:判断某需求是否满足,需要由测试机制来实现。
如何编写测试表达式以实现所需的测试:
(1) 执行命令,并利用命令状态返回值来判断;
0:成功
1-255:失败
(2) 测试表达式
test EXPRESSION
[ EXPRESSION ]
[[ EXPRESSION ]]
# 注意:EXPRESSION两端必须有空白字符,否则为语法错误。
bash 测试分类
bash 的测试类型:
1、数值测试
2、字符串测试
3、文件测试
4、组合条件测试
数值测试:数值比较
-eq:是否等于
# [ $num1 -eq $num2 ],注意空格
-ne:是否不等于
-gt:是否大于
-ge:是否大于等于
-lt:是否小于
-le:是否小于等于