学shell的第三天

编程原理:
1.编程介绍
   早期编程
      驱动    硬件默认是不能使用的;
        不同的厂家硬件设备之间需要进行指令沟通,我们需要驱动程序来进行翻译;
        更趋近与硬件开发的工程师,要学习“汇编语言”;而“汇编语言”被厂家限制
   现在编程
      基于高级语言,以及超高级语言,更好的让程序员能够的实现编程功能
   编程语言的分类:
      高级语言、超高级语言需要翻译成计算机可读的语言(二进制指令)
      解释型--逐行翻译,逐行执行  shell
      编译型--一次编译,全部执行  c语言  c++ c#
      程序 = 指令 + 数据
      面向对象--侧重于数据的编程语言
      面向过程--侧重于指令
   编程语言的执行方式:
      1、顺序执行
      2、循环执行--for(遍历) while(循环条件) until(和while相反)
      3、选择执行--分支if *case*
2、shell脚本语言介绍
   优点:调用os(操作系统)的命令行,来实现所有功能;
   缺点:没有库调用
   shell脚本包括:1、*命令*(非常重要)2、变量(全局变量、局部变量、本地变量、传参)3、逻辑关系
   shell的第一句话!!!
   #!/bin/bash    --定义脚本解释器
   /etc/shells --- 查看当前系统支持的shell程序
   echo $SHELL --查看当前会话的shell程序
   /etc/passwd --制定了用户默认支持的shell程序
   shell的执行:
      1.bash命令来执行脚本
         -n     查看shell脚本的逻辑错误(注意:单词写错了可不管)
         -x     逐行显示执行的脚本程序(方便排错)
      2.授权chmod u+x filename.sh
3、变量
   环境变量
   局部变量  declare 命令--定义变量类型
   本地变量  local在函数中使用
   变量类型:
      数值型:
         1.整形
         2.浮点型
         3.布尔值 0 1 (真 假)(True False)
    字符串:
       1.普通字符及字符串
       2.数组
    编程语言的分类:
       强类型语言:--数值必须被定义,才能进行处理或运算
       弱类型语言:--编程语言可以自动识别变量类型
     【*多态*一个数据具有多个属性,而最后使用的属性取决于和它进行运算的数据】
    传参
       $?  --上一条命令的执行状态0正确1-255错误
       $1 $2 $3 ${10}--命令后面传入脚本的数据,以空格为分隔符
       $# --统计传参数量        ${$#}这个是最后一个传参
       $* --表示所有传参,所有的传参以字符串形式进行输出
       $@--表示所有传参,将所有的传参以列表的形式进行输出
    定义变量的格式:
        NAME=VALUE
        我没让你通过命令declare定义变量类型
        declare -i 整数
        declare -a 数组
    变量命名:
       1.下划线的方式指定变量名称
       2.驼峰命名法
4、test文件测试、条件判断
   在脚本中,我们需要进行语句分支;说白了,就要做判断
   判断就是使用test命令来实现
   使用格式:

    1.test  参数  file

    2.[条件语句]
   常见的test选项:
      比较选项:
      -eq等于
      -ne不等于
      -gt 大于
      -ge大于等于
      -lt小于
      -le小于等于
    文件判断选项:
      -f     -d    -L       -r       -w        -x
    关联选项:
      -o 或
      -a 与
      ! 非
    字符串判断
       =
       !=
       -z 判断字符串长度是否为0
       -n和z相反
5、逻辑运算
   与 &&:两边的命令,都是真,结果才是真
   或 ||:两边的命令,一边为真就是真,同时为假才为假
   非        !=
6、算数运算
   let   加法
   expr 乘法
   $[$1+10]
   $(($1/$2))
   + - * / % **

原文地址:https://www.cnblogs.com/zrxuexi/p/11347458.html