1. 程式人生 > 其它 >linux 讀書筆記--bash/shell變數

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