• 12 shell脚本--004编程原理


    1、编程介绍

      (1)早期编程:

        驱动 :(硬件默认是不能使用的)不同的厂家硬件设备之间需要进行指令沟通,我们需要驱动程序来进行“翻译”

        更趋近于硬件开发的工程师,要学习“汇编语言”;而“汇编语言”被厂家所限制

        操作系统是做什么的:分配硬件资源

      (2)现在编程:

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

       (3)编程语言的分类:

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

          解释型:逐行翻译,逐行执行  shell、python、java、perl

              bash -x filename

          编译型:一次编译,全部执行  C、C++、C#、java

          程序 = 指令 + 数据

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

          面向过程  --侧重于指令的编程语言

       (4)编程语言的执行方式

          【一行一行】

          1、顺序执行        

          2、循环执行

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

          3、选择执行---分支

            if、*case*

    2、shell脚本语言介绍

      1、逻辑关系

        练习:添加用户          

            

            验证:

            

         2.shell没有内嵌函数,没有函数库调用,没有调用库的接口,

    2、shell脚本语言的介绍

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

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

      (3)shell脚本包括:1、*命令*(非常重要)

                       2、变量(全部变量、局部变量、本地变量、传参)

                  3、逻辑关系

          shell脚本的第一句话!!!

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

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

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

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

      (4)shell的执行

            1、bash命令来执行脚本

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

              -x     //逐行执行显示执行的脚本程序(方便排除哟)

            2、授权chmod  *(u)* +x filename     //*(u)*在你不是root用户时,要加上你的用户名

              使用全路径执行脚本,

    3、变量:一段命令的内存空间,用来存储  

      (1)

      环境变量

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

      本地变量  local  在函数中使用

      (2)变量类型:

          (1)数值型:

            1、整型    int

            2、浮点型 float

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

           (2)  字符型:

            1、普通字符及字符串

            2、数组

            

          (3)编程语言的分类:

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

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

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

      (3)传参

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

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

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

        $*-----表示所有传参,所有参数以字符串输出

        $@-----表示所有传参,所有参数以列表输出

      (4)定义变量格式:

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

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

          declare -i a = 10    //-i整数

          declare -a   //数组

      (5)变量命名:

          1、下划线的方式指定命名

          2、驼峰式命名方式

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

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

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

      使用格式:

        1、test 【option】file

        2、[ 条件语句 ]

        3、常见的test选项:

          (1)比较选项:

            -eq     //=

            -ne     // !=

            -gt      // >

            -ge     //>=

            -lt       //<

            -le      //<=

          (2)判断选项:

            -f      //文件

            -d     //目录

            -L     //

            -r -w -x      //读、写、可执行

          (3)关联选项:

            -o     //或

            -a     //和

            !       //非

    5、逻辑运算

      与   &&

      或    ||

      非    !=

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

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

    6、算术运 算

      let 1+1     

      expr 1*1

      $[$1+10]

      $(($1/$2))

      + - * / % **

  • 相关阅读:
    c++拷贝构造函数和赋值运算符
    c++运算符定义为成员函数还是非成员函数
    c++重载运算符位置的限制
    为什么operator<<运算符重载一定要为友元函数
    动态规划求一定数量骰子和的概率
    vector之reserve的坑
    c++ decltype和auto对比学习
    asio的前摄器模式
    动态显示当前时间
    js遍历二维数组
  • 原文地址:https://www.cnblogs.com/wx00/p/11344157.html
Copyright © 2020-2023  润新知