一、Linux中使用變數的原因
變數的好處在於用一個簡單或容易理解的符號來代替另一個比較複雜或容易變動的數據.簡而言之,使用變數就是為了方便.在Linux中,主機內有太多的數據需要訪問,而這些數據都是一些服務所必須的,且這些數據都非常繁瑣.因此,為了簡化整個運行流程,可以通過某個變數功能,讓這個變數可以根據不同的用戶而更改內容.這樣一來,系統只要根據那個變數去取得所需要的數據即可,而不需要去記憶那些繁瑣的數據.
二、查詢在Linux中的變數
查詢"命令"是外部命令(其它非bash套件所提供的命令)或內置在bash中的命令.
[root@localhost ~]# type -t name
type會顯示出name是外部命令還是bash內置的命令,其中:
file : 表示為外部命令
alias: 表示該命令為命令別名所設置的名稱
builtin: 表示該命令為bash內置的命令
例如: type -tpa cd
系統顯示為builtin,表示cd為內置命令.
三、變數在Linux中的應用
(1)獲取變數的內容
echo $變數名
例如:1. echo $PATH 則系統會顯示出變數PATH的值.
2. [root@localhost ~]#sum=30 50-120
[root@localhost ~]#echo $sum //列印出"30 50-120",而不是-40
30 50-120
另外,echo還可以向Linux終端列印數據.
例如:[root@localhost ~]#echo "haha"
haha
(2)變數的賦值
方法:可以直接使用"="來向某個變數賦值.
例如:#echo $hehe //變數未賦值,直接取其值時,則系統的顯示為空
#hehe=Vbird
#echo $hehe //系統顯示為Vbird
Attention!!!
1.等號兩邊不能直接接空格符.
2.變數名稱只能是英文字母與數字,但數字不能作為開頭.
3.若該變數需要在其它子程序中執行,則需要用export使變數變成環境變數,如export PATH.
4.取消變數的方法:unset 變數名
5.若變數未賦值,直接取其值時,則系統的顯示為空的.
6.雙引號、單引號在變數中的應用
雙引號仍然可以保持變數的內容.
單引號只能是一般字元,$name會失去原有的變數內容,僅作為字元的顯示類型而已.
#name=vbird
#echo $name //顯示內容為vbird
#echo "$name is me" //顯示內容為vbird is me
#echo '$name is me' //顯示內容為$name is me
(3)環境變數
1、列出當前Shell環境下所有環境變數及內容:#env
HOSTNAME=linux.dmtsai.tw //主機名稱
SHELL=/bin/bash //當前環境下,使用的Shell是哪一個程序?
HISTSIZE=1000 //記錄曾經執行過的命令的數目,RedHat中可記錄1000個
USER=root //當前用戶名稱
LS_COLORS //顏色設置
PATH //執行文件命令搜索路徑.目錄之間以冒號分隔.注意,文件的搜索是按PATH的值來查詢.
PWD //當前用戶所在的工作目錄
LANG //與語系有關
HOME //用戶的家目錄(進入用戶的家目錄:cd ~或cd)
2、列出所有變數(包括自定義變數):#set
在Linux中,默認情況下使用{大寫字母}來設置的變數一般為系統內定需要的變數.
PS1 //(數字1而不是英文字母)Linux命令提示符的設置
$ //本Shell的PID(Process ID).查詢Shell的PID,使用#echo $$
3、自定義的變數轉變為環境變數:#export
(1)#export
將所有的環境變數都顯示出來.
(2)Linux中的變數可分為環境變數和自定義變數.兩者的區別在於環境變數對於用戶來說是透明的,即可以在任何一個程序中使用這些環境變數.而自定義變數只在當前Shell中有效,關閉了當前Shell,該變數便無效.為了能使自定義的變數在任何程序中都可以使用,可以使用export在系統的配置文件/etc/profile、/etc/.bashrc中聲明該變數.
export聲明變數的格式: #export 變數名
4、從(鍵盤)鍵盤獲取變數:read
要讀取來自鍵盤輸入的變數,就是用read命令.該命令常用在Shell腳本的編寫中,與用戶進行對話.
命令格式: #read [-pt] 變數名
參數說明: -p 後接提示符
-t 後接等待的"秒數"
常式:
1、讓用戶從(終端)鍵盤輸入內容,並將輸入的內容賦給該變數.輸入該變數后,Linux系統自動提示用戶輸入.
[root@localhost root]# read yhy //將輸入的內容(this is a test!)賦給了變數yhy
this is a test!
[root@localhost root]# echo $yhy
this is a test!
2、提示用戶10秒內輸入自己的名字,並顯示出友好界面.
[root@localhost root]# read -p "Please input your name:" -t 10 named
此時,系統提示:
Please input your name: lss
[root@localhost root]# echo $named //將輸入的內容(lss)賦給了變數named
lss
5、利用declare聲明變數
在Linux中,使用declare聲明一個變數的類型.
命令格式: #declare [-aixr] 變數名
參數說明: -a 聲明該變數為數組(array)
-i 聲明該變數為整型(integer)
-x 將該變數變成環境變數,功能類似於export
-r 將該變數設置為只讀,即變數內容不能更改,也不能取消(unset)
常式:
1、[root@localhost root]# sum=30 50 -120
[root@localhost root]# echo $sum
30 50-120
[root@localhost root]# declare -i sum=30 50-120
-40
注:declare -i類似於C語言中將變數sum聲明為整型變數.
2、將sum變成環境變數
[root@localhost root]# delcare -x sum //相當於export sum
3、讓變數sum變成只讀屬性,不可更改
[root@localhost root]# declare -r sum
[root@localhost root]# sum=30 50 120
-bash:sum,readonly variable
6、限制文件系統與程序
若10個人同時登錄某Linux主機,這10個人同時打開了100個文件,每個文件大小約10MB,則需要Linux主機內存為10*10*100=10GB.這會導致Linux主機死機.為此,為了防止這種情況的發生,Linux中用ulimit命令來限制用戶的某些系統資源,包括打開的文件數量、可以使用的CPU的時間、可以使用的內存總量等.
[root@localhost root]# ulimit -f 1024 //限制用戶僅能建立1MB以下容量的文件
[root@localhost root]# ulimit -a //列出所有的限制數據
7、命令別名的設置
當命令特別長的時候,可以使用別名來設置新的命令.
命令格式: #alias 命令
常式:
當查詢隱藏文件時,可以使用#ls -l | more來查詢,但這樣輸入命令非常的繁瑣.因此可以這樣來操作:
# alias lm='ls -l | more'
這樣就立刻多了一個可執行的命令,該命令的名稱是lm,它執行的是ls -l | more.
# alias vim=vi
這樣執行vim編輯器就等效於vi編輯器.
8、查詢執行過的命令
在Linux中可以使用history命令來查詢用戶以往曾經使用過的命令.
[root@localhost root]# history //查詢所有曾經使用過的命令
[root@localhost root]# history 3 //列出當前最近使用過的3個命令
[root@localhost root]# history -w //將歷史記錄寫入~/.bash_history中
[火星人 ] 變數在Linux中的應用已經有588次圍觀