shell基础-变量

shell的介绍
  • 什么是shell
    •  shell是一种命令解释器,而linux的shell则是用来保护内核的,或者和内核进行交互的   
    • Python脚本首行的#!/bin/python其实就是指定了Python脚本运行的时候使用的解释器
  • shell的分类
    • 窗口式的shell       
      • Windows的桌面       
      • 各个发行版的linux的桌面    
    • 命令行shell       
      •  windows        cmd(命令行提示符)        
      • linux        sh        … …    bash        
      • linux查看默认shell解释器的方法        echo    $SHELL    
  • 常见的linux发行版本
    • ubuntu            界面化操作比较方便    
    • centos            6.5-6.7    
    • redhat            收费    
    • debain    
    • kali                渗透测试
shell命令与shell脚本的介绍
  • shell命令
    • 什么是shell命令
      • 一条命令,包括shell自身的命令以及linux系统命令        
    • 特点:            
      • 逐行输入,逐行输出            
      • 无法重复使用
  • shell脚本
    • 什么是shell命令脚本
      • 一堆shell命令的组合
    • 特点:            
      • 一次输入,逐行执行            
      • 脚本可以重复使用,提高工作效率
  • shell脚本的规范
    • 命名 
      • 命名要有意义,最好能够表明脚本功能        
      • 后缀一般以.sh结尾        
    • 首行是并且必须是命令解释器        
      • 默认首行使用    #!/bin/bash        
      • 特殊情况可以根据环境修改        
    • 版权信息        
      • 首行之下必须使用注释写明脚本的基本信息            
      • 脚本名,功能,编写时间,编写人,联系方式等    
    • 脚本的执行顺序        
      • 根据脚本编写顺序,从上到下依次执行    
    • 成对编写        
      • () [] {} “” ’’
  • shell执行方式
    • 使用命令解释器加载脚本文件     
      • 执行方式  
        • bash  脚本文件       
      •  使用场景:    
        • 生产常用    
    • 使用脚本的绝对路径或相对路径执行         
      • 执行方式
        • 直接用./文件路径执行脚本文件        
          • 当在脚本所在目录的时候,使用相对路径要加  ./脚本文件名
      • 使用条件条件:  
        • 脚本有用可执行权限                    
        • 脚本首行选定了解释器                
      • 使用场景:    
        • 私下        
    • source或.的形式  
      • 执行方式      
        • source 或 .    脚本文件        将脚本中的变量都导入到当前的环境
      • 作用
        • 加载文件,将写在文件中的配置信息马上生效        
      • 使用场景:   
        • 保证环境变量的一致性
    • 运行方式
      • 让shell脚本在后台运行
        • &  运行shell脚本的时候在后面加上&,代表以后台运行的方式
      • 运行的输出
        • 1> 指标准信息输出路径(也就是默认的输出方式)
        • 2> 指错误信息输出路径
        • 2>&1 指将标准信息输出路径指定为错误信息输出路径(也就是都输出在一起)
      • 习惯上
        • 标准输入(standard input)的文件描述符是 0
        • 标准输出(standard output)是 1
        • 标准错误(standard error)是 2
shell变量
  • shell的变量介绍
    • 变量包括两部分:        (变量名就是存放变量值的容器,容器不变,但是存放的内容可变)
      • 变量名      不变        
      • 变量值      变化            
    • shell中变量的统一格式
      • 基本格式:
        • 变量名=变量值
      • 注意:
        • 等号左右两边没有空格
    • shell中的变量的分类
      • 本地变量
      • 全局变量
      • 内置变量
  • 本地变量
    • 本地变量定义
      • 在当前的shell或者当前脚本存续期间可用的变量
    • 数据变量的定义方式(三种)
      • 变量名=变量值            
        • 变量值必须是连续的,不能有空格,不能有特殊字符                
      • 变量名=‘变量值’            
        • 变量值可以是不连续的,能有空格,特殊字符原样,引号中的是什么就是什么       
      • 变量名="变量值"            
        • 值可以不连续,如果值中使用已定义变量,则会先调用,再赋值
    • 命令变量的定义
      • 定义方式
        • 变量名=`命令`                注意命令两边的符号
        • 变量名=$(命令)                
      • 执行顺序:    
        • 先运行命令,将命令执行的结果赋值给变量名
  • 全局变量
    • 什么是全局变量
      • 系统所有环境都可以使用的变量        
    • 查看全局变量方法
      • env命令    
    • 定义方法
      • 分步的方式
        • 变量名=变量值       (定义一个本地变量,可以是数据或者是命令)                                          
        • export    变量名     (声明为全局变量)  
      • 同时定义                
        • export    变量名=变量值       (变量可以是数据或者是命令
  • 内置变量
    • 什么是内置变量
      • ash命令内部已经定义好的变量,可以直接使用,不需要定义
    • 使用方法 
      • shell脚本有关的内置变量
        • $0        获取当前脚本文件名称           
        • $#        获取当前脚本获取的参数的个数            
        • $n        获取当前脚本获取到的第n个参数                        
        • $?        获取上一条命令的执行情况,0表示成功,1表示失败,127表示找不到命令                        
        • $$        脚本运行时使用的进程号                    
        • $@       获取所有的参数
      • 获取hash序列
        • $RANDOM      获取随机的5为随机数
        • $RANDOM | md5sum(有的bash是md5)   将变量进行md5序列化
          • 返回的是一个序列化的字符串和一个 -  符号
        • \$RANDOM | md5sum | awk '{printf $1}'    将awk接收到的第一个参数打印出来(即序列化结果)
      • 字符串相关的内置变量
        • 截取
          • 使用方法           
            • ${var_name:start:n}                            
          • 备注
            • var_name是字符串变量名            
            • start表示的截取的起始位置                
              • start整数            从开头开始                
              • start:n 为 0-n        从结尾往前推n个位开始         
            • n    表示截取字符的个数
        • 和默认值相关的内置变量
          • 第一种            
            • var_name=$1            
            • ${var_name:-default}                            
              • default表示默认值,如果没有输入参数,default将会被使用                
          • 第二种            
            • var_name=$1            
            • ${var_name:+default}                        
              • 将会无视输入参数,直接输出设定好的默认值
  • 查看变量的方式
    • $变量名        
      • 使用场景:    私下使用时    
    • "$变量名"        
      • 使用场景:    调用变量时   
    • "${变量名}"        标准的使用方法
      • 用场景:    脚本中,规范化作业时
  • 变量的运算
    • shell中变量运算方法     
      • 1.使用let进行运算            
        • let n=n+1 
        • let n+=1   实现自加       
      • 2.使用$(())实现运算            
        • n=\$(($n+1))
  • 变量的其他操作
    • 将一个本地变量设置为只读,不允许删除变量,关闭终端才能删除        
      • readonly   变量名    
    • 删除变量        
      • unset   变量名

刘小恺(Kyle) wechat
如有疑问可联系博主