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

 

      

posted @ 2019-08-13 20:10  武恺雅  阅读(256)  评论(0编辑  收藏  举报