• shell 脚本


    目录

      1. shell 脚本介绍

      2. shell 脚本规则

        2.1 shell 脚本和其他语言对比

        2.2 变量的规则

      3. shell 脚本启动方式

      4. 编写shell 脚本注意事项

        4.1 区分单引号和双引号的不同和相同点

      5. read 传递多个参数

        5.1 参数传递

      6. 比较运算符和逻辑运算符

        6.1 比较运算符(数字)

        6.2 比较运算符(字符串)

        6.3 逻辑运算符

      7. if 语句

      8. case 规则

      9. for 循环

      10. while 循环

      11. shell 脚本的函数

        11.1 函数中的参数

        11.2 函数中的返回值

    1. shell 脚本介绍

    Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高,它使用了Linux/Unix下的命令。

    2. shell 脚本规则

    Shell 和python都是弱语言

      2.1 shell 脚本和其他语言对比

    # 从定义变量对比
    java
    
    变量类型    变量名=变量值
    int    a   =   2
    string    name    =   “zhangsan”
    输出:system.out.print(a)
    
    python
    
    变量名=变量值
    a    =   2
    b    =   “zhangsan”
    输出:print(a)
    
    js
    
    var    变量名=变量值
    var   a  =  1
    
    shell
    
    变量名=变量值
    规则:变量名和变量值没有空格
    a=2
    输出:echo $a
    输入:read  -p   “描述”   name

      2.2 变量的规则

        定义变量规则:变量名=值

        shell定义变量的规则:

        1:等号两边不能有空格
        2:定义特殊的变量需要用单引号或者双引号结合
        3:定义linux命令需要用反单引号

        举例:

        比如linux查看当前当前所在路径:pwd

        

    3. shell 脚本启动方式

      第一种:可能会考虑是否有权限

      ./文件名.sh

      一般只是缺少可执行的权限,所以我们只需要使用 chmod  +x 文件名 赋予文件权限即可

      第二种:不需要考虑权限,强制运行

      sh  文件名.sh

    4. 编写shell脚本注意事项

      文件里第一行必须是 #!/bin/bash

      脚本名称使用.sh结尾

      Shell输出值:echo $变量名

      4.1 区分单引号和双引号的不同和相同点

      

       单引号中有$变量名,输出的是$变量名

      

     5. read 传递多个参数

      read可以传递多个数据 read –p”name and passwoed”name password
    超过的部分都填充在最后一个变量上

      5.1 参数传递

      向.sh文件中传递数据

      格式:

      sh  脚本名.sh  参数

      输出方法:

      $1:接收第一个参数~~$n
      $n:文件名称
      $@:所有参数 s
      $#参数个数 $0

      示例:

      普通传递多个参数

      

       看上去更直观,改进后如图下:

      

       

       $1使用方法:

       $1正常编写:

      

       输出看看效果:

      

       $1特殊编写:

      

       输出看看效果:

      这里我们传参数时只传3个参数

      

       注意你会发现第三个参数在输出后结果为空,这是因为$后面的数字是几,他的结果输出就是第几个参数
    我们编写的shell是输出第4没有第3,所以我们只传递3个参数时他的第三个结果为空

      改进后如下:

      

       $0、$@、$#编写:

      

      输出看看效果:

      

       $0:输出shell脚本的名字
       $@:输出shell脚本传递参数具体的信息
       $#:输出shell脚本传递了几个参数

    6. 比较运算符和逻辑运算符

      6.1 比较运算符(数字)

        -eq   比较是否相等
        -ne   比较不相等
        -gt    比较大于
        -ge   比较大于等于
        -lt     比较小于
        -le    比较小于等于

      6.2 比较运算符(字符串)

        ==  比较是否相等

        !=   比较不相等

        加一操作:((i++))  ((i+=1))

        加n操作:

        s=$(($s+$i))

        s=$[$s+$i]  ((s=$s+$i))

      6.3 逻辑运算符

        逻辑与    -a
        逻辑或    -o
        逻辑非    !

    7. if 语句

      格式

      if [ 条件 ]

      then

      语句

      else

      语句
      fi

      注意点:

      1:if后面有空格
      2:条件两边有空格
      3:if条件里面存在变量,需要$,而且变量两边需要双引号
      4:fi是结束标识

      示例:

      判断用户输入的用户名(name)和密码(password)是否为admin 和 123456,如果是则提示登录成功(success),否则提示失败(fail)

      

       输出看看效果:

      

       格式:  

      if [ 条件 ]
      then
      语句
      elif [ 条件 ]
      then
      语句
      …
      else
      语句
      fi

      示例:

      输入学生的成绩,80<score<=100提示very good,60<score<=80提示good,其他则提示不及格

      

       输出看看效果:

      

    8. case 规则

      格式:

      case $变量名 in
      “值”)
      语句;;
      “值”)
      语句;;
      …
      esac

      注意:

      1:case这第一行以in结尾
      2:值可以是字符串也可以是数字, 如果数字范围[0-9]
      3:结束语句;;
      4:esac结束标志

      示例:

      输入一个序号,判断该用户选择哪款产品,A:笔记本 B:手机 C:小台灯
      

       输出看看效果:

      

       请输入对客服的满意度,【0-3】不满意,【4-6】满意,【7-9】非常满意

      

       输出看看效果:

      

       

    9. for 循环

      格式:

      for 变量 in 列表
      do
      语句
      done

      注意: 结束标志done

      

       输出看看效果:

      

      扩充:

      试想列表中的元素过多的时候,需要怎么做?
      seq mix step max

      注意:

      mix 开始数据 step:间隔 max 结束数据,如果step为1,可以省略,需要用反单引号

      

           

       步长为1时,可以省略

      输出结果看看:

      

       步长为2示例:

      

       输出结果看看:

      

     10. while 循环 

      while [ 条 件 ]
      do
      语句
      done

      注意:
      1: while后面有空格
      2:条件两边有空格
      3:while条件里面存在变量,需要$,而且变量两边需要双引号
      4:done是结束标识

      示例:

      求1-100之间的和

      

       输出结果看看:

      

    11. shell 脚本函数

      格式:

      函数名(){
      代码
      }
      # 调用格式
      函数名

      注意点:必须先定义一个函数,然后再调用它

      

      输出结果看看

       

       11.1 函数中的参数

        使用 $n 来接收数据

        示例1:

        输入1,100两个整数进行求和运算,并打印结果

        了解参数传递

        

         输出结果:

        

         在函数中实现1,100俩数求和

        

         输出结果:

        

         示例2:

        输入任意两个整数进行求和运算,并打印结果

        

         输出结果看看:

        

      11.2 函数中的返回值

      Shell中函数中默认存在返回值

      查看函数的返回值$?

      

       注意点:

      如果没有代码错误默认返回值为0,
      有代码错误返回1
      查看返回值内容:$?

      输出结果看看

      

       因为我根本没有sdsdf这个目录,所以返回值为1

  • 相关阅读:
    一个很大的数(计数、思维)
    第3章 图嵌入
    第一章 绪论
    区间最大值(数论分块)
    爬塔(set、括号匹配)
    第2章 图论基础
    V字钩爪(贪心)
    金牌厨师(二分、差分)
    Coprime(埃氏筛)
    Reordering(组合计数)
  • 原文地址:https://www.cnblogs.com/xinzaiyuan/p/14593695.html
Copyright © 2020-2023  润新知