Shell编程理论和运用
程序的编程风格和执行模式
过程式:以指令为中心,来进行写程序,数据服务于指令。(bash shell) C
对象式:以数据为中心,考虑先如何组织数据,指令服务于数据。 C# C++ JAVA PYTHON ……
shell程序 (调用二进制程序 解释执行)
程序的执行方式
计算机:二进制指令
编程语言:
低级:汇编语言
高级:
编译:高级语言–>编译器–>目标代码
解释:高级语言–>解释器–>机器代码 shell php ruby python
shell编程的执行模式
顺序执行
循环执行
选择执行
shell编程的结构 bash shell 核心中心就是调用指令(堆命令,严重依赖当前环境)
变量、数组
表达式
语句
shell脚本:文本文件 约定俗成要以.sh为结尾
结构和格式 shebang #!/bin/bash 脚本声明
脚本的概念
将要执行的命令按照顺序保存到一个文本中
给文件相应的权限即可执行
结合控制语句可以完成复杂操作
脚本的应用场景
重复 批量事务处理 自动化运维 定期任务执行 服务器运行监控
脚本结构:脚本声明+注释(解释信息)+可执行语句
结构和格式 shebang #!/bin/bash
Shell程序的执行和Python程序的执行
bash -n /path/to/script 检查语法是否错误
变量、数字赋值规则
变量赋值:=号
变量等于字符串:==
数字的大于小于等于:-eq 等于
-gt 大于
-ge 大于等于
-lt 小于
-le 小于等于
脚本循环控制语句
for while until
1:for循环
for var_Name in 列表; do
循环体(正常执行的执行命令)
语句1
语句2
语句3
…
done
bash -n 脚本文件 检查脚本文件语法是否错误
seq:遍历元素
创建10个用户,用户名为user1-user10,并打印出它们的UID
1加到100的和数
2:交互式脚本(变量的赋值以交互式来进行)
read -p 交互
3:条件判断
测试方法:
①:test 条件表达式
②:[ 条件表达式 ] 或者 [[ 条件表达式 ]](注意两边至少有一个空格)
文件或目录测试 格式 [ 操作符 文件或目录 ]
-d:测试是否为目录
-f:测试是否为文件
-e:测试文件是否存在
-r:测试文件是否有读权
逻辑测试
布尔值 (真 假)
与运算:
真 && 真 = 真(0)
真 && 假 = 假
假 && 真 = 假
假 && 假 = 假
或运算:
真 || 真 = 真(0)
真 || 假 = 真
假 || 真 = 真
假 || 假 = 假
非运算:
!真 = 假
!假 = 真
4:if语句判断(单分支 双分支 多分支)
if语句
格式
if condition;then
statement1
…
fi
if condition;then
分支1;
else
分支2;
fi
if condition;then
分支1;
elif condition;then
分支2;
…
else
分支n;
fi
输入成绩,得出100以内各分段的评语
5:程序执行状态返回值
bash :每个命令,执行状态都有返回值
成功:0
失败:非0
$?
脚本的状态返回值:脚本执行的最后一条命令:
自定义脚本状态返回值:exit[n]
6:case语句
格式
case 变量引用 in
条件1)
分支1
;;
条件2)
分支2
;;
…
*)
默认分支
;;
esac
[0-5][0-9] 0-59 [6-7][0-9] 60-79
7:Wille循环
格式
while 条件测试;do
循环体
done
while循环:条件测试成功,则循环;失败,则退出
如何退出?
必须有时刻,条件测试不成功
? :条件控制变量
如何让循环退出:在循环体中改变测试条件中用于控制循环次数的变量的值
用while循环写一个脚本
Ping 10.10.16这个网段的主机,打印出可以ping通的和不能ping通主机的数量,要求10.10.16.50-10.10.16.100这个区间
结果为ping通主机的数量
不能ping通主机的数量
求100以内的素数/质数
斐波那契数列
函数
函数基本讲解
过程式编程:代码重用
模块化编程
结构化编程