Bash的特性之多命令执行:
~]# COMMAND1 $(COMMAND2)
~]# COMMAND1 | COMMAND2 ... 进程之间的通信(IPC)
顺序执行结构:
~]# COMMAND1 ; COMMAND2; ...
选择执行结构:
逻辑运算:
与:逻辑乘法,&&
0:SUCCESS --> ture
1~255: FAILUER --> false
T && T =T
F && T =F
如果COMMAND1执行成功,COMMAND2才会执行;
如果COMMAND1执行失败,COMMAND2不会执行;
与运算的短路逻辑运算:只要第一个操作数为F,其逻辑运算结果一定是F;
或:逻辑加法,||
只要两个全部都为F时,其运算结果才为F,
T || T :T
T || F :T
F || F: F
“或”运算的短路逻辑:只要第一个操作数为T,则其运算结果一定为T;
只要COMMAND1能够成功执行,COMMAND2就不必执行了
只要当COMMAND1执行失败时,COMMAND2才会被执行;
非:逻辑取反, !,
!STRING:读取命令历史空间的内容;
! Ture = false
! False =ture
! COMMAND
! COMMAND1 && COMMAND2 相当于 COMMAND1 || COMMAND2
逻辑运算符号也有优先级:
! > && > ||
德摩根定律:
!(A && B) == ! A || ! B
!(A || B) == ! A && ! B
异或:双目运算符
比对两个操作数是否相同,如果不同则逻辑运算为真,如果相同则逻辑运算为假;
Shell脚本编程:
什么叫编程?
编写程序源代码。
为了能够让用户再使用计算机的时候,可以让计算机以非交互的方式完成某些任务,需要将这些任务编制成为一个文件,让计算机顺序读取,从而实现功能;
编程语言:离硬件越近,处理效率越高就是低级语言
高级语言:
根据源代码的处理方式:
编译运行语言:
源代码 --> 编译器(编译) -->汇编器(汇编)--> [链接器(库的链接)] -->
可直接执行的二进制语言;
解释运行语言:
源代码 --> 直接启动跟源代码对应的解释器程序,由解释器边解释边执行;
根据其编程过程中的功能的实现是调用库还是调用外部程序文件;
完整编程语言:
利用库或编程组进行编程;
脚本编程语言:
解释器
Shell脚本:调用shell程序,其次调用需要的外部命令文件;命令解释器,
提供了单一功能的编程接口:过程式编程逻辑的支持;
根据程序的编写范式:程序 = 指令 + 数据 程序=算法 + 数据结构
过程式编程语言:
以指令(算法)为中心,围绕指令(算法)的实现设计数据和数据结构,数据为指令服务的;
算法或指令的实现形式:
顺序执行:
选择执行:
循环执行:
对象式编程语言:
以数据为中心,将数据实例化为类,围绕着数据的需求来部署指令(算法)
类,属性,
低级语言:
汇编语言
Shell脚本编程:
过程式编程语言,解释运行的语言,依赖于外部程序文件运行的语言;
Shell脚本到底是什么?
纯文本文档—文件中存储的数据都是以字符为单位存储的:
根据用户的需求来解决用户问题的大量命令的组合体:
很多命令不具备执行幂等性“—任何命令多次执行的结构是一致的:
很多命令都不具备,在shell脚本中就需要使用大量的程序逻辑来判断某个命令是否满足其运行条件,以避免在运行过程中出现严重错误;
Shell脚本中的代码内容:
1.首行必须是shebang,解释器路径,必须占据绝对行首:在执行时,启动相应的解释器以解释脚本内诸多的命令;
#!/bin/bash
#!/bin/sh ...
2.在shell脚本中,处了shebang之外,以#占据绝对行首的内容,均为解释行,解释器会忽略这样行的内容;
3.解释器会忽略脚本内所有的空白行;
4.大量的命令和关键字(if,else,thenn,do,while,for,...),
注意:shell脚本一旦运行,是在当前的shell中根据shebang的指示,开启一个解释器(子shell),解释执行代码内容,shell脚本的内容是在一个子shell进程中实现的;
我们可以利用文本编辑工具来编写shell脚本:
推荐使用vim
约定下,脚本文件的文件名的后缀为.Sh,也可以不加;
脚本的运行方法:
1.为脚本文件赋予执行权限,直接运行此文件;
Chmod + /PATH/TO/SCCRIPT_FILE
~]# /PATH/TO/SCCRIPT_FILE
如果在执行脚本时,只写脚本文件名,不给出路径的话,必须确保PATH变量中保存的路径下能找到该脚本文件;
2.直接使用解释器运行脚本,将脚本作为解释器命令的参数;
Bash /PATH/TO/SCCRIPT_FILE