在了解shell编程基础前先看一下bash中的逻辑运算
bash的特性之多命令执行
COMMAND;COMMAND1...顺序执行结构
选择执行结构:
逻辑运算:
与:逻辑乘法,&&(相当于物理电路中的串联)
0:成功执行-->true
1~255失败-->false
t&&t-->t
t&&f-->f
f&&f-->f
f&&t-->f
“与”短路逻辑运算:只要第一个操作数为false,则其逻辑运算的结果一定为false,如果COMMAND1能够执行成功,则COMMAND2会被执行,如果COMMAND1执行失败,则COMMAND2不会被执行
或:逻辑加法 ||(相当于物理电路中的并联)
只有两个全是false时,才会false
t||t-->t
t||f-->t
f||t-->t
f||f-->f
“或”的短路逻辑运算:只要第一个操作数为true,则其逻辑运算的结果一定为true
COMMAND1||COMMAND2
只要COMMAND1执行成功了,COMMAND2就没有执行的必要了,只有当COMMAND1执行失败,cOMMAND2才会被执行
非:逻辑取反 单目运算符 !
!true=!false
!false=!true
逻辑编程的优先级:!>&&>||
德摩根定律:!(a&&b)=!a||!b
!(a||b)=!a&&!b
异或:双目运算符
比对两个操作数是否不同,如果不同,则逻辑运算结果为真,如果相同,则逻辑运算结果为假
接下来说一下shell脚本编程。你需要知道的一点是程序=指令+数据
编程:简单说就是编写程序源代码
为了能够让用户在使用计算机的时候,可以让计算机以非交互式的方式完成某些任务,需要将这些任务编织成为一个文件,让计算机顺序读取,从而实现功能
而编程的语言又分为高级语言和低级语言
高级语言根据源代码的处理方式分为
编译运行语言:源代码-->编译器(编译处理)-->汇编器(完成汇编操作)-->[链接器(库的链接)]-->汇编成可以直接执行的二进制文件
解释运行语言:源代码-->直接启动跟源代码对应的解释器程序,由解释器边解释边运行
根据其编程过程中的功能的实现是调用库还是调用外部程序文件
完整编程语言:利用库或编程组件进行编程
脚本编程语言:解释器
shell脚本:调用shell程序,其次调用需要的外部命令文件,命令解释器,
提供了单一的功能编程接口,过程式编程逻辑的支持
根据程序的编写规范又分为
过程式编程语言
以指令(算法)为中心,围绕着指令(算法)的实现设计数据和数据结构,数据为指令服务的
算法和指令的实现形式
顺序执行
选择执行
循环执行
对象式编程语言:
以数据为中心,将数据实例化为类,围绕着数据的需求来部署指令(算法)
类、属性、方法
低级语言: 编程语言
而shell脚本编程属于过程式编程语言,解释运行的语言,依赖于外部程序文件运行
shell脚本:
1.纯文本文档—文件中所存储的数据都是以字符为单位进行存储的
2.根据用户需求来解决用户问题的大量命令的组合体
3.很多命令不具备“执行幂等性”,在shell脚本中就需要使用大量的程序逻辑来判断某个命令是否满足运行条件,以避免在运行过程中出现严重错误
这里解释一下执行幂等性:任何命令多次执行的结果是一致的
写shell脚本,对内容也有一定的书写规范
shell脚本中的代码内容
1.首行必须是shebang(解释器路径),shebang必须占据绝对行首;在执行时启动相应的解释器已解释脚本内诸多的命令;
#!/bin/bash
#!/bin/sh
#!/usr/bin/python
#!/usr/bin/per
2.在shell脚本中,除了shebang之外,以#占据绝对行首的内容均为注释行,解释器会忽略这样的行的内容
3.解释会忽略脚本中所有的空白行
4.大量的命令和关键字(if,else,then,do,while,)
注意:shell脚本一旦运行,是在当前的shell中根据shebang的指示,开启一个解释器(子shell)解释执行代码内容,shell脚本的内容是在以个子shell进程中实现的
编写shell的脚本有很多,我们可以使用Nano、vi、vim、emacs等来进行编写,推荐使用vim,约定下的脚本文件名的后缀为.sh,也可以不加
脚本的运行方法:
1.为脚本文件赋予执行权限,直接运行此文件;
chmod +x /PATH/TO/SCRIPI_FILE
如果在执行脚本的时候,只写脚本文件名不给出路径的话,必须保证PATH变量中保存的路径下能够找到该脚本文件
2.直接使用解释器运行脚本,将脚本作为解释器命令的参数
bash /PATH/TO/SCRIPI_FILE
本文转自Vincent一马 51CTO博客,原文链接:http://blog.51cto.com/mazhenbo/1913175,如需转载请自行联系原作者