測試工程師需要了解的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
- 無條件生效 ${變量名+默認值} 如果是否有指向內容,都輸出默認值
歡迎大家去 我的博客 瞅瞅,裏面有更多關於測試實戰的內容哦!!