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

          

  • 相关阅读:
    C++笔记(2018/2/6)
    2017级面向对象程序设计寒假作业1
    谁是你的潜在朋友
    A1095 Cars on Campus (30)(30 分)
    A1083 List Grades (25)(25 分)
    A1075 PAT Judge (25)(25 分)
    A1012 The Best Rank (25)(25 分)
    1009 说反话 (20)(20 分)
    A1055 The World's Richest(25 分)
    A1025 PAT Ranking (25)(25 分)
  • 原文地址:https://www.cnblogs.com/www-k/p/11348213.html
Copyright © 2011-2022 走看看