zoukankan      html  css  js  c++  java
  • shell的编程原理

    一、编程介绍

    1、早期编程

    (1)驱动  硬件默认是不能用的;

    (2)不同的厂家硬件设备之间需要进行指令沟通,我们需要驱动程序来进行“翻译”;

    (3)更趋近于硬件开发的工程师需要学习“汇编语言”,而“汇编语言”被厂家所限制,C、C++的底层就是汇编语言

    2、现在编程

       基于高级和超高级语言,使程序员能够更好的实现编程功能

    3、编程语言的分类

    根据服务的重心不同分为:

    (1)面向过程:侧重于指令

    (2)面向对象:侧重于数据

    根据程序翻译成二进制指令的方式不同分为:

    (1)低级语言:汇编语言

    (2)高级语言:根据编译方式的不同分为:

            (1)解释型:逐行翻译,逐行执行。例:shell、python、JAVA

            (2)编译型:一次编译,全部执行。例:C、C++、C#、JAVA

    4、顺序执行无逻辑关系

       循环执行  --  *for* while until

       选择执行  --  分支 if case*

    二、shell脚本语言的介绍

    1、优缺点

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

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

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

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

               (3)逻辑关系

    3、Shell的第一句话(必须写)

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

           #!/usr/bin/python

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

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

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

    4、shell的执行

           (1)Bash命令来执行脚本

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

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

      (2)授权chmod  u+x filename.sh

                   使用全路径执行脚本        

    示例:添加用户

    #!/bin/bash

    if id $* &> /dev/null;then

      echo"这个用户已经存在"

    else

      for i in $*;do

        useradd $i

        echo "123456" | passwd --stdin "$i" &> /dev/null

        echo"用户 $i 添加成功"

      done

      exit 0

    fi

    三、变量

    1、分类

    (1)环境变量

    (2)局部变量:declare 命令 – 定义变量类型

    (3)本地变量 :关键字必须指定local,local在函数中使用

    2、变量类型:

      (1)数值型:

                     整型 int

                      浮点型 float double

                      布尔值 0 1(真 假) (TRUE FALSE)

            (2)字符串:

           普通字符及字符串

           数组

    3、编程语言的分类:

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

                  弱类型语言 – 编程语言可以自动识别变量类型

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

    4、传参

                         $?   //上一条命令的执行状态 0争取 1-255 错误

                         $1 $2 …$(10)  //命令后面传入脚本的数据,以空格为分隔符

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

                         $*  //表示所有的传参,所有的传参以字符串形式进行输出

                         $@   // 表示所有的传参,所有的传参以列表的形式进行输出

                       【工作中要对所有的传参进行操作的时候,就要考虑$*和$@】

    5、定义变量格式:

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

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

                         Declare -I 整数 int() str()

                         Declare -a 数组

    6、变量命名:

    (1) 下划线的方式指定变量名称

    (2) 驼峰命名方式

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

    1、在脚本中,我们需要语句分支(判断),判断就是使用test命令来实现。

        使用格式:

                  (1)test [option] file

               (2)[条件语句]

          【用test判断时加[],不用时不加[]】

    2、常见的test选项

    (1)比较选项

                  -eq   等于

               -ne   不等于

                  -gt   大于

                  -ge  大于等于

                  -lt    小于

                  -le   小于等于

    (2)判断选项

                  -f   判断是否为普通文件

                  -d  判断是否为目录文件

                  -L  判断是否为链接文件

                  -r -w -x   判断文件是否具有 读 写 执行 权限

    (3)关联选项

                  -o  或

                  -a  与

                  -!   非

    3、字符串判断

                   =    判断两百年的字符串是否相同

                   !=   不等于

                  -z    判断字符串是否存在,存在即为真

                  -n    和-z相反,存在为假,不存在即为真

    五、逻辑运算

                    与       &&:两边的命令都为真,才为真

                    或        ||  :两边的命令,一真即为真

                    非        != :

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

                    示例:[$? -eq 0]&& exit 0 || exit 1

    六、算术运算

         let 1+1

        expr 1*1

        $[$1+10]

        $(($1/$2))

    示例:用while循环计算100内整数相加的和

    #!/bin/bash

    declare -i i=0

    declare -i sum=0

    while [ $i -le 100 ];do

      sum+=$i

      let i++

    done

    echo $sum

          

  • 相关阅读:
    Verilog HDL设计进阶:有限状态机的设计原理及其代码风格_zt
    敏感信号与判断条件冲突引起的错误
    在Quartus II里查看综合器生成的原理图
    RGB与YCbCr颜色空间的互相转换公式
    YCbCr2转换成RGB的verilog解析_zt
    Verilog中函数与任务比较
    Verilog奇偶校验_zt
    8位数据的奇偶校验verilog程序_zt
    4个32位数的比较
    Latex排版工具的使用(一) 分类: Latex 2014-06-14 22:52 448人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/www-k/p/11348213.html
Copyright © 2011-2022 走看看