学习shell第三天

编程原理:
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
   #!/user/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 (假真)

       字符串:
            1、普通字符及字符串
            2、数组

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

            弱类型语言 -- 编程语言可以自动识别变量类型
            【*多态* 一个数据具有多个属性,而最后使用的属性取决于和他进行运算的数据】

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

   定义变量格式:
       NAME = VALUE (一个等于叫赋值,两个等号叫判断)
       我们通过命令declare 定义变量类型
       declare -i a=10 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


   + - * / % **

posted @ 2019-08-15 20:41  老了杜杜  阅读(106)  评论(0编辑  收藏  举报