linux 讀書筆記--bash/shell變數
變數的顯示與設定:
- echo
語法:echo $variable
注意事項:
等號兩邊不能直接接空格;
可用轉義字元'\'將特殊符號($,\,!,空格,回車等)變成一般字元;
增加變數內容可輸入:"$variable"或${variable}累加內容,例如 : home="$home"address;
若該變數需要在其他子程序中執行,則需要以export來使其變成環境變數,例如 export PATH;
一般情況下,父程序的自定義變數是無法在子程序中使用的;
使用大寫字母來設定的變數一般為系統內定需要的變數;
思考題:
變數設定中,單引號和雙引號的區別在哪裡?
Answer:單引號不保留變數的內容,僅能是一般字元,而雙引號保有變數的內容。
例子:
root# name=lms
root# echo $name
lms
root# myname='$name its me'
root# echo $myname
$name its me
root# myname="$name its me"
root# echo $myname
lms its me
- env
檢視環境變數
- set
檢視所有變數
-read
讀取來自 鍵盤輸入的變數
root# read sum
123
root# echo $sum
123
-p 接提示語
-t 接等待秒數
- declare
語法:
declare [-axir] variable
引數:
-a 定義後面變數為陣列型別;
-x 與export用法一致,將變數變成環境變數;
-i 定義後面變數為數字型別;
-r 將變數設定為只讀模式;
root@Dashuo:/home/manshuo# declare -r sum
root@Dashuo:/home/manshuo# sum=1
bash: sum: 只讀變數
變數內容的刪除:
語法:
echo ${path#/*kerberos/bin:}
刪除path變數中從最前面開始最短匹配/*kerberos/bin:的內容
*號代表任意字元
echo ${path##/*kerberos/bin:}
刪除path變數中從最前面開始最長匹配/*kerberos/bin:的內容
echo ${path%/*bin}
刪除path變數中從最後面開始最短匹配/*bin的內容
echo ${path%/*bin}
刪除path變數中從最後面開始最長匹配/*bin的內容
變數內容的替換:
語法:
${variable/舊字串/新字串} #替換第一個舊字串
${variable//舊字串/新字串} #替換所有舊字串
將456替換成678:
root@Dashuo:/home/manshuo# echo $my_path
/123/456/we/are
root@Dashuo:/home/manshuo# echo ${my_path/456/678}
/123/678/we/are