Shell指令碼筆記(二)Shell變數

2022-08-13 06:51:14 字數 2335 閱讀 5614

全域性變數對於定義它的shell和其子shell都是可見的,但如果生成它的shell被終止,全域性變數也就消失了。另外全域性變數會被子shell的同名變數覆蓋。

#定義乙個全域性變數

export a="

i want break free

"#或者

b="sunday morning

"export b

#刪除乙個全域性變數

unset a

區域性環境變數只能在定義它們的程序中可見。

#注意變數名、等號、和值之間是沒有空格的

c="live forever

"unset c

區別全域性環境變數和區域性環境變數其實我們只需要記住:全域性環境變數作用範圍多了個字shell而已。

另外關於指令碼中的變數,按區域性變數方式定義的在整個其範圍是整個指令碼檔案,包括你在方法中定義的變數。要產生乙個"塊級作用域"的變數需要在變數定義時加上local

local d="

lucy in the sky

"

linux下所有使用者要使用的環境變數:

方案一:將變數放入/etc/profile當中--------致命缺陷:如果公升級linux系統/etc/profile檔案會被更新,設定的變數不復存在。

個人使用者要使用的環境變數:

放入:~/.bashrc檔案

#定義

array=(one tow three four)

#使用echo $

#three

echo $

#one tow three four

#刪除unset array[1]

unset array[*]

1)位置引數變數

$0--------------------------------可獲取當前指令碼檔名,如果執行指令碼時包含路徑,得到的值時路徑

$n---------------------------------n為數字,當n超過9時必須採用$形式。獲取執行指令碼的第n個引數

$#--------------------------------當前執行的shell所接引數個數

$*---------------------------------獲取當前指令碼的所有引數,交雙引號時相當於"$1 $2 $3"

$@-------------------------------不加引號時功能和不加引號的$*一樣,加引號時等同於 "$1" "$2" "$3"

2)程序中的特殊狀態變數

$?--------------------------------可獲取上個指令執行後的返回值

$$--------------------------------執行shell指令碼的程序號

1.系統內建命令

1)echo:在螢幕上輸出變數  命令格式 echo args  其中arges可以是變數和字串組合

2)eval: 

命令格式:eval args

功能:當shell程式執行到eval語句時,shell讀入引數args,並將它們組合成乙個新的命令。

3)exec:

命令格式: exec 命令引數

功能:在不建立新的子程序前提下,轉去執行指定的命令,指定命令執行完畢後,終結該程序。

(exec 命令:常用來替代當前 shell 並重新啟動乙個 shell,換句話說,並沒有啟動子 shell。使用這一命令時任何現有環境都將會被清除。exec 在對檔案描述符進行操作的時候,也只有在這時,exec 不會覆蓋你當前的 shell 環境)

4)read:

命令格式: read  [引數] [變數名](該變數不能為特殊變數)

功能:從標準輸入讀取字串等資訊,傳給shell內部定義的變數。

read -t 10 -p '

pls input the num:

' num

5)shilft:

命令格式:shilft—shilft positional parameters

功能:在程式中每使用一次shilft語句,都會使所有位置引數向左移動乙個位置,最左邊的變數被刪除。

6)exit:

退出shell,可選定乙個數字作為返回值。

2.處理變數內容

shell指令碼(二)

一 test條件判斷 如果表示式為true,返回0退出狀態,如果表示式為false,則返回非零退出狀態。test具有替代語法,使用括號 將表示式括起來,更易於閱讀 1。字串比較運算子 對兩個字串進行比較,相等則返回零推出狀態,不相等則返回非零退出狀態 對兩個字串進行比較,不相等則返回零退出狀態,相等...

Shell指令碼筆記

1 home目錄下的 bashrc指令碼檔案記錄提示文字顏色等各類設定 2 bash歷史記錄檔案 bash history 3 echo執行之後會新增換行符 4 bash中不會對單引號變數求值,而是原樣輸出 5 echo e 包含轉義序列的字串 6 var value不同於var value,前者是...

shell指令碼筆記

比較 描述 n1 eq n2 檢查n1是否與n2相等 n1 ge n2 檢查n1是否大於或等於n2 n1 gt n2 檢查n1是否大於n2 n1 le n2 檢查n1是否小於或等於n2 n1 lt n2 檢查n1是否小於n2 n1 ne n2 檢查n1是否不等於n2 1.指令碼sh bin bash...