Shell脚本编程原理

1、编程介绍:
   早期编程
      驱动     硬件设备默认是不能使用的
             不同的厂家硬件设备之间需要进行指令沟通,我们需要驱动程序进行翻译
      更趋近于硬件开发的工程师,要学习“汇编语言”;而“汇编语言”被厂家所限制
   现在编程:
      基于高级语言,以及超高级语言,更好的让程序员能够实现编程功能
   编程语言的分类:
      高级语言、超高级语言需要翻译成计算机可读的语言(二进制指令)
      解释型 -- 逐行解释,逐行执行 (shell python)
      bash -x filename.sh
      编译型 -- 一次编译,全部执行 (C语言 C++ C#)
      程序 = 指令 + 数据
      面向对象 -- 侧重于数据的编程语言
      面向过程 -- 侧重于指令

   编程语言的执行方式:
     【一行一行】
      1、顺序执行 
      2、循环执行 -- *for(遍历)* while(循环条件) until(和while相反) 
      3、选择执行 -- 分支 if *case*

2、shell脚本语言介绍
   优点:调用os(操作系统)的命令行,来实现所有功能;
   缺点:shell没有内嵌函数,没有函数库调用(区分于python)

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

   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(False True)
       字符串:
           1、普通字符及字符串
           2、数组

       编程语言的分类:根据变量的不同,分为强类型语言与弱类型语言
           强类型语言:数值必须被定义,才能进行处理或运算
           弱类型语言:编程语言可以自动识别变量类型
           【*多态* 一个数据具有多个属性,而最后使用的属性取决于和他进行运算的数据】

       传参
           $? -- 上一条命令的执行状态 0 正确 1-255 错误
           $1 $2 ... ${10} -- 命令后面传入脚本的数据,以空格为分隔符
           $# -- 统计传参数量 ${$#}
           $* -- 表示所有的传参,以字符串的形式进行输出
           $@ -- 表示所有的传参,将所有的传参以列表的形式进行输出

       定义变量格式:
           NAME=VALUE(一个等号叫赋值,两个等号叫判断)
           通过命令declare定义变量类型
           declare -i a=10 定义a为整型,值为10
           declare -a 数组

       变量命名:
           1、下划线的方式指定变量名称
           2、驼峰命名方式


4、test文件测试,条件判断
    在脚本中需要进行语句分支;说白了就是要做判断
    判断就是使用test命令来实现;
    使用格式:
       1、test [option] file
       2、[条件语句]

    常见的test选项:
       比较选项:
          -eq 等于
          -ne 不等于
          -gt 大于
          -ge 大等于
          -lt 小于
          -le 小等于
       判断选项:
          -e 判断文件是否存在
          -f 判断是否为普通文件
          -d 判断是否为目录文件
          -L 判断是否为链接文件
          -r -w -x 判断文件是否具有读、写、执行权限
       关联选项:
          -o 或
          -a 与
          ! 非

       字符串判断:
          =   判断两边的字符串是否相等
          !=  不等于
          -z   判断字符串长度是否为0 存在为真,不存在为假
          -n   判断字符串长度是否为0 存在为假,不存在为真

5、逻辑运算
    与 && 两边的命令都为真,结果才为真
    或 || 两边的命令,一边为真,就是真,同时为假才是假
    非 !=

    这个逻辑运算符,前后对接的都是单独存在的命令;
    [ $? -eq 0 ]&& exit 0 || exit 1


6、算术运算
    * let 1+1
    expr 1*1
    * $[$1+10]
    $(($1/$2))

原文地址:https://www.cnblogs.com/4443056bdH/p/11348442.html