格式:變量名=變量值 linux
注意:一、’‘="兩邊不能有空格 正則表達式
二、變量值,linux都會認爲是字符串,若是有字符有空格,須要用雙引號或單引號括起 bash
三、變量值,雙引號括起,會解釋變量;而單引號不會,只會原樣輸出測試
eg:var="hello world"spa
格式: $變量名 或者 ${變量名}code
注意:一、若是變量名後還有其餘字符串,須要將變量名用大括號{}括起來orm
eg:echo $var 輸 出 hello world進程
echo ${var}_green 輸出 hello world_greenci
提升:輸出變量值的值,即將變量值做爲下一個變量的名字(輸出下一個變量的值)字符串
abc_key="hello" Informix=abc temp=${Informix}_key echo ${temp} echo ${!temp}
格式:export 變量名=變量值
注意:export的效力僅及於該次登錄操做,若是但願長久有效,能夠將其寫在/etc/profile文件中(此文件是系統啓動後自動加載的),或者將其寫在/home/用戶名/.bash_profile文件中(此文件是此用戶登錄都自動加載的)。
命令:export 列出當前系統中的環境變量(包括臨時的環境變量)
格式:unset 變量名 eg:unset var
unset var= (表示變量存在,但其值是null)
方法一、[ -n $變量名 ] 變量爲空,返回true,不然爲false
方法二、${#變量名} 獲取變量值的長度,爲0,變量爲空
var= if [ -n $var ];then echo "var is null" else echo "var is not null" fi # 輸出 :var is null echo ${#var} #輸出 :0
格式1:${變量名:位置起點}
解釋:由指定的字符串位置開始,截取字符串到字符串結束的位置
格式2:${變量名:位置起點:截取字符串長度}
解釋:由指定的字符串位置開始,截取指定長度的字符串
abc_key="hello" Informix=abc temp=${Informix}_key echo ${temp} echo ${!temp}
格式1:${#變量名}
格式2:echo ${變量名} | wc -c 統計的是字節數比字符串長度多1(多是結束符)
格式3:expr length "${變量名}"
# echo ${#var} 15 # echo ${var} | wc -c 16 # expr length "$var" 15
格式1:${變量/ 樣式 / 替換的字符串} 替換第一個與樣式匹配的,樣式能夠包含正則表達式(下面均可以)
格式2:${變量// 樣式 / 替換的字符串} 替換所有匹配的
# var="da :: bai :: ni :: hao" # echo $var da :: bai :: ni :: hao # echo ${var/::/_} da _ bai :: ni :: hao # echo ${var//::/_} da _ bai _ ni _ hao
補充:
語法 | 用途 |
${變量 /# 樣式 / 替換的字符串} | 替換第一個,可是從變量值開頭首字符開始匹配,不匹配,不替換 |
${變量 /% 樣式 / 替換的字符串} | 替換第一個,可是從變量值尾部尾字符開始匹配,不匹配,不替換 |
# echo ${var} da :: bai :: ni :: hao # echo ${var/#da/hh} hh :: bai :: ni :: hao # echo ${var/#::/hh}
刪除字符串
格式1:${變量 / 樣式/} 刪除第一個與樣式匹配
格式2:${變量 // 樣式/} 刪除所有匹配的
其實就是字符串替換擱置中替換後的字符串變爲空。
語法 | 用途 |
${變量 /# 樣式/} | 刪除第一個,可是從變量值開頭首字符開始匹配,不匹配,不刪除 |
${變量 /% 樣式/} | 刪除第一個,可是從變量值尾部尾字符開始匹配,不匹配,不刪除 |
# echo ${var} da :: bai :: ni :: hao # echo ${var/#::/} da :: bai :: ni :: hao # echo ${var/#da/} :: bai :: ni :: hao
語法 | 用途 |
${變量#樣式} | 與前面對比,刪除最短的匹配,首字符不匹配就不刪除了 |
${變量##樣式} | 與前面對比,刪除最長的匹配,首字符不匹配就不刪除了 |
${變量%樣式} | 與後面對比,刪除最短的匹配,首字符不匹配就不刪除了 |
${變量%%樣式} | 與後面對比,刪除最短的匹配,首字符不匹配就不刪除了 |
# var="/home/dxx/test/mypro" # echo ${var#*/} home/dxx/test/mypro # echo ${var##*/} mypro # echo ${var#bai*/} /home/dxx/test/mypro
格式:${!開頭字符串@} 或者 ${!開頭字符串*}
把全部一指定字符串開頭的變量名列出
filename="ntupdate" dir="adsf" dir_file="12313" echo ${!di@} 輸出:dir dir_file
語法 | 解釋 |
$0 | 命令名字 |
$1-$n | 第一個到第n個的參數 |
$* | 全部的位置參數 |
$# | 位置參數的個數 |
$? | 上一個命令執行的結果 0 成功,非0有誤 |
$$ | 目前的進程編號 |
${@:起點} | 由起點開始,取得後面的位置參數 |
${@:起點:個數} | 由起點開始,取得後面指定個數的位置參數 |