測試工程師需要了解的shell變量知識

  • 2020 年 3 月 27 日
  • 筆記

歡迎訪問個人博客

什麼是變量

  • 本地變量:手動定義的,在當前系統的某個環境下才能生效,作用範圍小

    • 普通變量:

      • 單引號:原字符輸出,變量名=『變量值』
      ➜  shell name='tom'  ➜  shell echo $name  tom  
      • 雙引號:變量名=「變量值」,看一下值當中有沒有對其他變量的引用,如果有就獲取變量值然後組合到一起輸出
      ➜  shell word="I am $name"  ➜  shell echo $word  I am tom  
      • 直接命名不加任何引號:變量名=變量值
      ➜  shell age=33  ➜  shell echo $age  33  
      • 習慣用法:數字不加引號,其他家雙引號
    • 命令變量:變量值是命令的變量,會將命令的執行結果賦值給變量

      • 變量名=`命令`,這是反引號
      ➜  shell files=`ll`  ➜  shell echo $files  total 8  -rwxr-xr-x  1 zhouyajun  staff   228B Mar 26 21:58 itcast.sh  drwx-wx--x  3 zhouyajun  staff    96B Oct 11 22:15 test  
      • 變量名=$(命令)
      ➜  shell woshishui=$(whoami)  ➜  shell echo $woshishui  zhouyajun  
      • 執行流程:執行命令,將命令執行後的結果複製給新的變量名

全局變量: 手工加默認方式定義的作用範圍最大的變量

  • env 查看所有的全局變量
  • 聲明全局變量
    • name=tom, 然後 export name,這就聲明為全局變量了
    • export name=tom,直接聲明全局變量

查看、刪除變量

  • 查看變量
    • "asd ${變量名}"
    • "${變量名}"
  • 刪除–unset 變量名

內置變量:bash命令中自帶的一些參數變量

  • 腳本文件

    • $0 獲取當前執行的shell腳本文件名

      #! /bin/bash  # yy複製,p粘貼  echo "獲取當前文件名:get_name"  echo "獲取當前文件名:$0"    ➜  shell /bin/bash get_name.sh  獲取當前文件名:get_name  獲取當前文件名:get_name.sh  
    • $n 獲取當前執行的shell腳本的第n個參數值,n=1..9,當n為0的時候表示腳本的文件名,如果n大於9就要用大括號括起來${10}

    #! /bin/bash  echo "獲取參數"  echo "獲取命令行參數:$1"    ➜  shell /bin/bash get_args.sh 1 2 3  獲取參數  獲取命令行參數:1  
    • $# 獲取當前執行shell命令行中參數的總個數
    #! /bin/bash  echo "獲取參數"  echo "獲取命令行參數:$#"    ➜  shell /bin/bash get_args.sh 1 2 3 d gf  獲取參數  獲取命令行參數:5  
    • $? 獲取執行上一個指令的返回值(0為成功,非0為失敗)

      ➜  shell echo $?  這是上面指令執行結果  0  ➜  shell asdfas  這是一條錯誤指令  zsh: command not found: asdfas  ➜  shell echo $?  127  
  • 精確獲取 ${變量名:其實位置:截取長度},

    • ${file:0:5} 從第一個字符開始,截取5個字符
    • ${file:5:5} 從第6個字符開始截取6個字符
    • ${file:0-6:5} 從倒數第6個字符開始,截取之後的5個字符
    ➜  shell file=abcdefghijklmnopkrstuvwxyz  ➜  shell echo $file  abcdefghijklmnopkrstuvwxyz  ➜  shell echo ${file:0:5}  abcde  ➜  shell echo ${file:5:5}  fghij    ➜  shell echo ${file:0-6:5}  uvwxy  
  • 默認值

    • 有條件生效 ${變量名:-默認值},如果變量沒有指向的內容就輸出默認值
    #! /bin/bash  a="$1" # 獲取命令行第一個參數  echo "參數的值是: ${a:-1}"  # 設置默認值1    ➜  shell /bin/bash default_value.sh 55  參數的值是: 55  ➜  shell /bin/bash default_value.sh  參數的值是: 1  
    • 無條件生效 ${變量名+默認值} 如果是否有指向內容,都輸出默認值

歡迎大家去 我的博客 瞅瞅,裏面有更多關於測試實戰的內容哦!!