编程原理:

1、编程介绍

       早期编程:

              驱动       硬件默认是不能使用的;

                   不同的厂家硬件设备之间需要进行指令沟通,我们需要驱动程序来进行“翻译”;

              更趋近与硬件开发的工程师,要学习“汇编语言”;而“汇编语言”被厂家所限制;C C++ 的底层就是汇编语言;

       现在编程:

              基于高级语言,以及超高级语言,更好的让程序员能够的实现编程功能;

 

       编程语言的分类:

              高级语言、超高级语言需要*翻译*成计算机可读的语言(二进制指令)

              解释型 --  逐行翻译,逐行执行  shell python JAVA

                     bash -x filename.sh

              编译型 --  一次编译,全部执行  C语言 C++  C# JAVA

             

              程序 = 指令 + 数据

              面向对象 -- 侧重于数据的编程语言

              面向过程 -- 侧重于指令

 

       编程语言的执行方式:

              【一行一行】

              1、顺序执行

              2、循环执行 -- *for(遍历)* while(循环条件) until(和while相反)

              3、选择执行--分支 if *case*

             

2、shell脚本语言介绍

       优点:调用os(操作系统)的命令行,来实现所有功能;

       缺点:没有库调用(区分Python)

 

       shell脚本包括:1、*命令*(非常重要) 2、变量(全局变量、局部变量、本地变量、传参) 3、逻辑关系

      

       shell的第一句话!!!(必须写)

       #!/bin/bash  --  定义脚本解释器 (普遍认为#为注释行,这里特殊)shebang

       #!/usr/bin/python

 

       /etc/shells   --  查看当前系统支持的shell程序

       echo $SHELL  --   查当前会话的shell程序

       /etc/passwd  --  制定了用户默认支持的shell程序(/sbin/nologin)

 

       shell 的执行:

              1、bash命令来执行脚本

                     -n  查看shell脚本的逻辑错误(注意:单词写错可不管)

                     -x  逐行显示执行的脚本程序(方便拍错)

              2、授权 chmod u+x  filename.sh

                     使用全路径执行脚本,即可

 

3、变量

       环境变量

       局部变量  declare 命令 -- 定义变量类型

       本地变量  local 在函数中使用

 

       变量类型:

              数值型:

                     1、整形  int

                     2、浮点型  float

                     3、布尔值  0 1 (真 假) (True False)

              字符串:

                     1、普通字符及字符串

                     2、数组

 

              编程语言的分类:

                     强类型语言  --  数值必须被定义,才能进行处理或运算

                     弱类型语言  --  编程语言可以自动识别变量类型

                     【*多态* 一个数据具有多个属性,而最后使用的属性取决于和它进行运算的数据】

 

       传参

              $?  --  上一条命令的执行状态 0 正确 1-255 错误

              $1  $2 ... ${10}  --  命令后面传入脚本的数据,以空格为分隔符

              $# --  统计传参数量        ${$#}  ?

              $* --  表示所有的传参,所有的传参以字符串形式进行输出

              $@ -- 表示所有传参,将所有的传参以列表的形式进行输出

              【工作中要对所有的传参进行操作的时候,就要考虑$*和$@】

 

       定义变量格式:

              NAME=VALUE  (一个等号叫赋值,两个等号叫判断)

              我们通过命令declare 定义变量类型

              declare -i 整数   int()  str()

              declare -a 数组

       变量命令:

              1、下划线的方式指定变量名称

              2、驼峰命名方式

 

4、test文件测试、条件判断

       在脚本中,我们需要进行 语句分支; 说白了,就要做判断

       判断就是使用test命令来实现;

       使用格式:

              1、test [option] file

              2、[ 条件语句 ]

              【什么时候加 [  ] 什么时候不加 [  ] ?】

       常见的test选项:

              比较选项:

                     -eq 等于

                     -ne 不等于

                     -gt 大于

                     -ge 大于等于

                     -lt 小于

                     -le 小于等于

              判断选项:

                     -f 判断是否为普通文件

                     -d 判断是否为目录文件

                     -L  判断是否为连接文件

                     -r -w -x  判断文件是否具有 读 写 执行 权限

              关联选项:

                     -o  或

                     -a  与

                     !    非

              字符串判断:

                     =  判断两边的字符串是否相同

                     !=  不等于

                     -z  判断字符串是否存在

                     -n  和 -z 相反,存在为假,不存在为真

 

5、逻辑运算

       与   &&   : 两边的命令,都为真,结果才是真

       或   ||       : 两边的命令,一边为真,就是真,同时为假,才是假

       非   !=

 

       这个逻辑运算符,前后对接的都是单独存在的命令;

      

       [ $? -eq 0 ] && exit 0 || exit 1

 

6、算术运算

       *let 1+1

              let a=1+1

              echo $a

       expr 1*1

              expr 1 * 10

       *$[$1+10]

              a=$[2+3]

              echo $a

       $(($1/$2))

              a=$((3/2))

              echo $a

 

       + - * / % **