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函数

 
   定义:函数名(){}
   案例如下:
  
 
posted @ 2020-11-22 21:41  时念  阅读(352)  评论(0编辑  收藏  举报
Live2D