linux下變量使用和擴展

變量定義

格式:變量名=變量值       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   變量名=變量值

注意: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}

輸出 :hello

計算字符串長度

格式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有誤
$$ 目前的進程編號
${@:起點} 由起點開始,取得後面的位置參數
${@:起點:個數} 由起點開始,取得後面指定個數的位置參數
相關文章
相關標籤/搜索