變數和引用 Linux
轉:http://blog.sina.com.cn/s/blog_6bd7d9430101506p.html
變數和引用 Linux
變數和引用 Linux
變數:變數替換和賦值;無型別的Shell變數;環境變數;位置引數
引用:全引用和部分引用;命令替換;轉義
變數用於儲存有用資訊,如路徑名、檔名、數字等,Linux使用者使用變數定製其工作環境,使系統獲知使用者相關的配置。變數本質上是儲存資料的一個或多個計算機記憶體地址。
變數可分為三類:
本地變數:僅可以在使用者當前Shell生命期的指令碼中使用的變數,類似於C、C++、Java等程式語言中區域性變數
環境變數:適用於所有由登入程式所產生的子程式,環境變數在使用者登入後到登出之前的所有編輯器、指令碼、程式和應用中都有效.
位置引數也屬於變數,它用於向Shell指令碼傳遞引數,是隻讀的
變數替換和賦值
變數是某個值的名稱,引用變數值就稱為變數替換
$符號是變數替換符號,如variable是變數名,那麼$variable就表示變數的值
變數賦值有兩種格式:
variable=value
${ variable=value }
等號的兩邊可以有空格,這不影響賦值操作;
如果值(value)中包含空格,則必須用雙引號括起來;
變數名只能包括大小寫字母(a-z和A-Z)、數字(0-9)、下劃槓(_)等符號,並且變數名不能以數字開頭,否則視為無效變數名
利用unset命令可以清除變數的值,命令格式為:
unset 變數名
readonly可將變數設定為只讀,變數一旦設定為只讀,任何使用者不能對此變數進行重新賦值
variable=value
#先對一個變數進行賦值
readonly variable
#將variable變數設定為只讀
無型別的Shell指令碼變數
Shell指令碼變數是無型別的,這與awk變數是一樣的
bash Shell不支援浮點型,只支援整型和字元型,預設情況下,Shell指令碼變數是字元型的,
同時,字元型的變數還具有一個整型值,為0;但是,bash
Shell並不要求在定義一個變數時宣告其型別
Shell會根據上下文判斷出數值型的變數,並進行變數的算術運算和比較等數值操作。判斷標準是變數中是否只是包含數字,如果變數只包含數字,則Shell認定該變數是數值型的,反之,Shell認定該變數是字串
環境變數
定義環境變數的方法
ENVIRON-VARIABLE=value
#環境變數賦值
export ENVIRON-VARIABLE #宣告環境變數
(多一個指定為環境變數而已)
清除環境變數同樣是unset命令
env----列出已經定義的環境變數
PWD和OLDPWD
PWD記錄當前的目錄路徑,當利用cd命令改變當前目錄時,系統自動更新PWD的值
OLDPWD記錄舊的工作目錄,即使用者所處的前一個目錄
PATH
PATH就記錄了一系列的目錄列表,Shell為每個輸入命令搜尋PATH中的目錄列表
HOME
HOME記錄當前使用者的根目錄
SHELL
SHELL變數儲存預設Shell,預設的值為/bin/bash
USER和UID
USER和UID是儲存使用者資訊的環境變數,USR表示已登入使用者的名字,UID則表示已登入使用者的ID
PPID
PPID是建立當前程式的程式號,即當前程式的父程式號
PS1和PS2
提示符變數,用於設定提示符格式
PS1是用於設定一級Shell提示符的環境變數,也稱為主提示符字串,即改變: [root @jselab
~]#
例6-18:PS1變數是[\u@\h
\W]\$,\u、\h、\W和\$表示了特定含義,\u表示當前使用者名稱,\h表示表示主機名,\W表示當前目錄名,如果是root使用者,\$表示#號,其他使用者,\$則表示$號
PS2是用於設定二級Shell提示符的環境變數,
提示符變數中特殊符號及其意義:
模式 意義
\d 以“周 月 日”格式顯示的日期 日期資訊
\H 主機名和域名 host
\h 主機名 host
\s Shell的型別名稱 shell
\T 以12小時制顯示時間,格式為:HH:MM:SS time
\t 以24小時制顯示時間,格式為:HH:MM:SS time
\@ 以12小時制顯示時間,格式為:am/pm
12小時制顯示時間
\u 當前的使用者名稱
user
\v bash Shell的版本號
version
\V bash Shell的版本號和補丁號
\w 當前工作目錄的完整路徑 way
\W 當前工作目錄名字
\# 當前命令的序列號
#sequence
\$ 如果UID為0,列印#;否則,列印$
幾個重要的配置檔案
$HOME/.bash_profile是最重要的配置檔案,當某Linux使用者登入時,Shell會自動執行.bash_profile檔案,如果.bash_profile檔案不存在,則自動執行系統預設的配置檔案/etc/profile
[gridsphere@jselab ~]# cat .bash_profile
#gridsphere使用者的.bash_profile檔案
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
export JAVA_HOME=/usr/local/jdk1.5.0_04
export
CATALINA_HOME=/home/gridsphere/jakarta-tomcat-5.0.28
export GLOBUS_LOCATION=/usr/local/globus-4.0.4
export CLASSPATH=/usr/local/jdk1.5.0.04/lib
export ANT_HOME=/usr/local/apache-ant-1.7.0
export PATH=$PATH:$JAVA_HOME/bin: $ANT_HOME/bin:
$HOME/bin
如果要使新加入的行立即生效,需要利用source命令執行.bash_profile檔案。
source命令也稱為“點命令”,即句點符號“.”和source命令是等價的,source命令通常用於重新執行剛修改的初始化檔案,使之立即生效,而不必登出並重新登入
. .bash_profile
#注意:句點符號後面用空格與檔名相分隔
source bash_profile
bash Shell的.bash_login檔案來源於C Shell的.login檔案,bash
Shell的.profile檔案來源於Bourne Shell和Korn Shell的.profile檔案
當使用者登入時,首先查詢是否存在.bash_profile檔案,若它不存在,則查詢是否存在.bash_login檔案,若它也不存在,則查詢是否存在.
profile檔案
位置引數
位置引數(positional
parameters)是一種特殊的Shell變數,用於從命令列向Shell指令碼傳遞引數
$1表示第1個引數、$2表示第2個引數等等,$0指令碼的名字,從${10}開始,引數號需要用大括號括起來,如${10}、${11}、${100}……
$*和$@一樣,表示從$1開始的全部引數
特殊位置引數 意義
$# 傳遞到指令碼的引數數量
$*和$@ 傳遞到指令碼的所有引數
$$ 指令碼執行的程式號
$? 命令的退出狀態,0表示沒有錯誤,非0表示有錯誤
引用
引用指將字串用引用符號括起來,以防止特殊字元被Shell指令碼重解釋為其他意義,特殊字元是指除了字面意思之外還可以解釋為其他意思的字元
符號 名稱 意義
“” 雙引號 引用除美圓符號($)、反引號(`)和反斜線(\)之外的所有字元
‘’ 單引號 引用所有字元
`` 反引號 Shell將反引號中內容解釋為系統命令
\ 反斜線 轉義符,遮蔽下一個字元的特殊意義
全引用(單引用)和部分引用(雙引用)
雙引號引用除美圓符號($)、反引號(`)和反斜線(\)之外的所有字元,即$、`和\在雙引號中仍被解釋為特殊意義
在雙引號中保持$符號的特殊意義可以引用變數,如“$variable”表示以變數值替換變數名
命令替換
`Linux 命令`
$( Linux 命令)
轉義
反斜線符號(\)表示轉義,當反斜線後面的一個字元具有特殊意義時,反斜線將遮蔽下一個字元的特殊意義,而已字面意義解析它
特殊字元 意義
& 傳遞到指令碼的引數數量
* 0個或多個在*字元之前那個普通字元
+ 匹配1個或多個在其之前的那個普通字元
^ 匹配行首,或後面字元的非
$ 命令的退出狀態,0表示沒有錯誤,非0表示有錯誤
` 反引號,Shell引用符號
“ 雙引號,Shell引用符號
| 管道符號或表示“或”意義
? 匹配0個或1個在其之前的那個普通字元
\ 轉義符
轉義符除了遮蔽特殊字元的特殊意義之外
echo命令的-e 選項表示將轉義符後跟字元形成的特殊字元解釋成特殊意義
符號 意義
\n 新的一行
\r 返回
\t 表示Tab鍵
\v或\f 換行但游標仍舊停留在原來的位置
\b 退格鍵(Backspace)
\a 發出警報聲
\0xx ASCII碼0xx所對應的字元
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29519108/viewspace-1967013/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 引用變數變數
- php傳引用和全域性變數PHP變數
- Linux下變數的定義及引用Linux變數
- Linux Shell程式設計(10)——引用變數Linux程式設計變數
- awk引用shell變數變數
- C#7.0--引用返回值和引用區域性變數C#變數
- Python學習之變數、物件和引用Python變數物件
- Less tips:宣告變數之前可以引用變數!變數
- linux基礎——shell變數(本地變數和環境變數)Linux變數
- Makefile引用與環境變數變數
- JavaScript中的安全變數引用JavaScript變數
- Java物件及物件引用變數Java物件變數
- less 全域性變數使用 引用變數
- 【教程】(Angular)模版引用變數的魔法Angular變數
- VBScript中引用ASP的字串變數字串變數
- 給物件引用變數賦值(轉)物件變數賦值
- Linux 新增環境變數和刪除環境變數Linux變數
- block 對外部引用變數的處理BloC變數
- C#變數型別(1):引用型別和值型別 (轉)變數型別
- php的變數引用與銷燬機制PHP變數
- 引用型別變數的強制轉換型別變數
- 智慧指標引用計數變化學習指標
- 使用final關鍵字修飾一個變數時,是引用不能變,還是引用的物件不能變?變數物件
- Shell--引用變數帶不帶""的區別變數
- Python 中變數賦值傳遞時的引用和複製介紹Python變數賦值
- 引數和變數變數
- Linux Shell變數Linux變數
- 介面測試如何在 json 中引用 mock 變數JSONMock變數
- 介面測試如何在json中引用mock變數JSONMock變數
- 非const引用不能指向臨時變數變數
- Bash變數和引數變數
- 在Linux下檢視和修改環境變數Linux變數
- 變數的分類(臨時(本地)變數、環境變數、全域性變數和系統變數)變數
- 靜態變數和非靜態變數變數
- 成員變數和區域性變數變數
- 區域性變數和全域性變數變數
- linux 命令符變數Linux變數
- Linux之shell變數Linux變數