shell脚本day03-编程原理

隐身守侯 提交于 2020-01-23 21:35:09

一、编程介绍

  (计算机只能识别二进制指令)

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

      【按行执行】

    • 顺序执行
    • 循环执行---for(遍历) while(循环条件) until(和while相反)
    • 选择执行---分支 if case

二、shell脚本语言介绍

  shell语句是面向过程的,侧重于指令集。  

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

  缺点:没有库调用(区别于python)

  shell语句的基本组成成分:

    • 命令(重点!)
    • 变量(全局变量、局部变量、本地变量)
    • 逻辑关系
    • 数据-变量(转参)

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

三、shell的第一句话(重要)

  

#!/bin/bash //定义脚本解释器(普遍认为#为注释行,这里特殊)
#!/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

        使用全路径执行即可

四、变量 (一段未命名的内存空间)

  1. 环境变量
  2. 局部变量 declare命令---定义变量类型
  3. 本地变量 local在函数中使用  
  4. 变量类型
    • 数值型
      • 整形 Int
      • 浮点型 float
      • 布尔值 true false 0 1
    • 字符串
      • 普通字符及字符串
      • 数组
    • 编程语言的分类
      • 强类型语言---数值必须被定义,才能进行处理或运算
      • 编程语言可以自动识别变量类型

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

  5.传参

    • $? --- 上一条命令的执行状态 0 正确 1-255错误
    • $1 $2 ... ${10} --- 命令后面传入脚本的数据,以空格为分隔符
    • $# --- 统计传参的数量  //${$#}取该条命令的最后一个参数
    • $@ --- 表示所有的传参,所有的传参以列表的形式进行输出
    • $* --- 表示所有的传参,所有的传参以列表的形式进行输出
    • 工作中应考虑$@于$*的区别

  6.定义变量格式

    • NAME=VALUE(一个等号叫赋值,俩个等号叫判断)
    • 通过命令declare定义变量类型
    • declare -l a=10  //相当于 int()
      declare -a //数组
        

  7.变量命名有俩种方式,分别为以下划线的方式指定变量名称和以驼峰命名方式命名

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

  在脚本中,我们需要进行语句分支,简单来说,就是要判断,而判断就是用test命令来实现的

  1.使用格式

    • test[opthon]file
    • [ 条件语句 ] //一定要在中括号内加入俩个空格

  2.常见的test选项

比较选项 -eq 等于 -ne 不等于 -gt 大于 -ge 大于等于 -le 小于等于 -lt 小于
判断选项  -f 判断是否为普通文件 -d 判断是否为目录文件 -l 判断是否为连续文件  -r-w-x 判断文件是否具有读写执行权限
关联选项 -0 或 -a 与 ! 非
字符串判断 = 判断俩边的字符串是否相等 != 不等于 -z 判断字符串是否存在 -n 作用与-n相反

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

六、逻辑运算与算术运算

  与:&& ; 或 :|| ;非:!= 

  let !+1

  expr 1*1

  $[$1+10]

  $(($1/$2))

   

    

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!