zoukankan      html  css  js  c++  java
  • 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))

      + - * / % **

  • 相关阅读:
    Leetcode Spiral Matrix
    Leetcode Sqrt(x)
    Leetcode Pow(x,n)
    Leetcode Rotate Image
    Leetcode Multiply Strings
    Leetcode Length of Last Word
    Topcoder SRM 626 DIV2 SumOfPower
    Topcoder SRM 626 DIV2 FixedDiceGameDiv2
    Leetcode Largest Rectangle in Histogram
    Leetcode Set Matrix Zeroes
  • 原文地址:https://www.cnblogs.com/wx00/p/11344157.html
Copyright © 2011-2022 走看看