zoukankan      html  css  js  c++  java
  • shell基础

    写在最前,作为一名软件测试人员,shell基础也是必不可少的技能,就笔者遇到的工作场景中,在linux部署测试环境,查看错误信息,监控服务器性能都会用到shell语句,此外,不管是dockerfile,或者是自动化脚本都需要用到这块的技术,这篇文章一方面也是梳理一下比较杂乱的技能点,另一方面也是留个档,方面后面持续查看学习。本文主要梳理shell基础,详见正文。
        
    一、shell介绍
      
      shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到linux内核。它是一门弱类型的脚本语言。
     
    二、shell脚本格式
      
      shell脚本是以.sh结尾的文件,其中文件的第一行内容为#!/bin/bash,第一行的内容指定了shell脚本解释器的路径,而且这个指定路径只能放在文件的第一行。
      #!/bin/bash  
     
    三、shell变量及参数传递
    • 变量定义及使用
          shell变量的名称定义与其他变成语言一致,包括:
          1. 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头
          2. 中间不能有空格,可以使用下划线,不能使用标点符号
          3. 不能使用bash里的关键字
          这里要特别注意的是:变量名和等号之间不能有空格,如下:
          
          变量值输出:echo $变量名
          变量释放:unset 变量      
          
          案例如下:
           

          特殊变量定义:双引号、单引号、反单引号

          "" 双引号括起来的变量:会将其中的变量转变为实际值输出

          ''  单引号括起来的变量:输入什么就是什么

          `` 反单引号包含的内容:会作为shell命令执行,返回结果 

          样例如下:

          

    • 参数传递
          输入操作:read -p "提示信息" 变量名 
          
          以文件形式接收参数:
          $1--->传递第一个参数
          $n---->传递第n个参数
          $0:显示的是文件名称
          $@:显示所有的参数
          $#:显示的参数的个数
       
          样例如下:
          脚本内容:  
                         
          输出内容:
           
    • 重定向
         >覆盖,>>追加
         案例如下:执行 >> 两遍追加,输入内容是追加的,如果是执行 > ,则会覆盖删除
                             
     四、shell逻辑判断
    • 分支结构
       if分支
       if...then...elif...then...else...fi分支,案例如下:
       注意:[] 前后都需要有空格
        
       case分支
       第一行最后必须为in,每个执行语句以;;结束,最后以esac结束,如下:
        
        补充:
        逻辑运算符:
        -a :且
                  -o :或
         ! : 否
          比较运算符:
        -eq:equal 相等 
        -ne:not equal  不相等
        -ge:greater equal 大于等于 
        -gt:greater than  大于
        -le:less equal 小于等于
        -lt:less than  小于
          字符串比较:
        ==  相等 
        !=   不等
        -z 判断字符串长度是否为0
           -n 判断字符床是否为空
                  测试文件/目录状态 :
        -d dir  判断是否为目录
                -f  file  判断是否为文件
        -e file  判断文件或目录是否存在
        -w、-r 、-x 判断文件是否可写,可读、可执行
     五、shell循环体
       
      for循环
        格式:
        for 变量名 in 列表
        do
          语句
        done
       案例如下:
       

          其中:命令: seq start size max,可以生成一个指定起始、结尾、步长的列表

      while循环
      格式:
      while [ 条件 ]
      do 
        执行语句
      done
      案例如下:
      
     
     

    六、shell函数

     
       定义:函数名(){}
       案例如下:
      
     
  • 相关阅读:
    [原创]全新IFPGA-Cable----支持Xilinx/Altera/Lattice JTAG和UART
    [原创]Modelsim后仿真
    [原创]iFPGA-USB2.0 FT2232H USB & UART开发板使用说明
    [原创]X-HDL 4.2安装与使用
    [原创][Synth 8-2543] port connections cannot be mixed ordered and named ["*_Top.v":1151]
    [原创]..OBJgpio.axf: error: L6002U: Could not open file ..objgpio.o: No such file
    [原创]Zynq SDIO WIFI SotfAP调试
    [原创]时序图新画法
    [原创]基于Zynq SDIO WIFI 2.4G/5G SotfAP STA
    [原创]Zynq AXI-CDMA的使用
  • 原文地址:https://www.cnblogs.com/leixs/p/13785623.html
Copyright © 2011-2022 走看看