shell

一、shell介绍
  通常所说的shell就是shell脚本,它是一门脚本语言,弱类型,在定义时不需要指定变量类型
二、shell规范
  1)第一行内容为#!/bin/bash,表示使用shell进行编程
  2)#:shell中的注释
  3)shell脚本是以.sh结尾的文件

三、语法

  1、变量

    1)定义变量格式

      变量名=变量值  #==两边没有空格

    2)变量命名规范

      由字母、数字、下划线组成,不能已数字开头

    3)输出和释放变量

      输出变量:echo $变量名

      释放变量:unset 变量名

    4)特殊变量,带有空格的

      双引号:如果变量值中存在$变量名(即变量)的话,那么输出结果将会是变量名对应的变量值,如果想原样输出,则可以在$变量名前加转义字符\

      单引号:不管内容如何都原样输出

      反单引号:专门用于存放命令

  2、read的用法

    1)方法1:read 变量名1 变量名2 。。。。

      说明:变量名可以1个或多个,多个时变量名之间用空格隔开,如果给出变量值多于变量名,则把多余出的变量值都赋给最后一个变量

    2)方法2:read -p ‘提示内容‘ 变量名1 变量名2 。。。。。

      说明:添加提示信息,便于方便知道需要输入什么参数 

  3、参数传递

    1)向.sh文件中传入数据

      格式:sh xw.sh /etc /root ...  命令 文件名 参数1 参数2 。。。

    2)文件内接收参数

      $1:第一个参数

      $2:第二个参数

      。

      。

      。

      $n:第n个参数

      $0:为文件名

      $@:所有参数

      $#:参数个数

  4、重定向

    说明:把命令的内容输出到文件中

    正确命令:由1表示

      覆盖:命令 1>文件名  例:ls 1>1.txt

      追加:命令 1>>文件名  例:ls 1>>1.txt

    错误命令:由2表示

      覆盖:命令 2>文件名  例:ls 2>1.txt

      追加:命令 2>>文件名  例:ls 2>>2.txt

  5、分支结构(if...else...)

    1)格式:

       if [ 条件 ];then

       语句

       else

       语句

       fi

    2)注意事项

      条件两边有空格隔开

      多个条件之间要有空格

      if后面要有空格

      条件中如果存在变量,则变量两边需要添加双引号

    3)案例  判断目录是否为空

      shell

 

 

  6、逻辑运算符

 

    1)说明:

 

      且:-a

 

      或:-o

 

      非:!

 

    2)案例:判断用户输入的用户名和密码是否为admin 123456,是则提示登录成功,否则提示登录失败

 

      shell

  7、比较运算

    1)说明:

      -eq:判断是否相等

      -gt:判断是否大于

      -ge:判断是否大于等于

      -lt:判断是否小于

      -le:判断是否小于等于

      -ne:判断是否不等于

    2)数字变量操作

      加1

        ((i++))  ((i+=1))  i=$[$i+1]  i=$(($i+1))  let i=i+1

      减1

        ((i--))  ((i-=1))  i=$[$i-1]  i=$(($i-1))  let i=i-1

      注:加减n,则把1变为n即可

    3)案例:输入数字,判断数字是否大于0,大于0则将该数字减1并输出,否则加1并输出

      shell

 

 

   8、判断目录、文件是否存在  

    1)test:

      test -e 文件名:表示文件是否存在

      test -f 文件名:表示文件是否存在且为文件

      test -d 文件名:表示文件是否存在且为目录

      test -r 文件名:可读

      test -x 文件名:可操作

      test -w 文件名:可写

    2)案例1:利用test判断文件

       shell

 

    3)if+参数

      说明:去掉test,但沿用参数

      格式:if [ -参数 ] 文件名

    4)案例2:直接利用if+参数判断文件

 

       shell

 

 

   9、if...elif...else分支

    1)格式:

      if [ 条件1 ];then

 

 

        语句1

      elif [ 条件2 ];then

        语句2

      elif [ 条件3 ];then

        语句3

      。。。。。

      elif [ 条件n ];then

        语句n

      else

        语句

      fi

     2)案例:判断学生成绩,[90-100]提示优秀,[80-90)提示良好,[70-80)提示一般,[60-70)提示及格,其他不及格

      shell

 

  

  10、case分支

    1)格式:

      case $变量名 in

      "值1")

        语句1;;

      "值2")

        语句2;;

      ........

      *)

        语句n

      esac

    2)注意:

      ① case这一行最后必须是in

      ② ;;为结束语句

      ③ *默认

      ④ ‘值’可以是字符串也可以是数字

      ⑤ ‘值’也可以是范围

    3)案例1:输入一个字母,判断该用户选择的是哪款产品,A:笔记本;B:电饭锅;C:小台灯

      shell

 

 

    4)案例2:请输入对客服的满意度,【0-3】为不满意,【4-6】为满意,【7-9】为非常满意

      shell

 

 

  11、循环结构:for

    1)格式

        for 变量名 in 列表

        do

          语句

        done

    2)列表

      格式:seq start size max

      说明:

        start:开始点

        size:间隔,若为1则可省略不写

        max:结束点

    3)案例:输入1-10之间的数

      shell

 

    4)案例:求1-100之间的和

      shell

 

 

    

 

 

    

 

      

      

        

 

 

      

 

 

 

 

 

 

 

 

shell

上一篇:(转)分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)


下一篇:scrapy_ip_agent