學習Linux Shell變量時,你可能會遇到Shell變量如何使用的問題,這裡将介紹本地變量以及環境變量等的使用。
變量是一種使用友善的占位符,用于引用計算機記憶體位址,該位址可以存儲shell腳本運作時可更改的程式資訊。
一,各種變量
(1)本地變量
本地變量(也就是使用者自定義變量)隻能在目前SHELL環境下獲得指派,進入其他子SHELL就不能獲得指派了
(2)環境變量
環境變量時作用在全局的,也就是不管你怎麼進子SHELL,也就是改變環境,環境變量都可以獲得指派。
export (對子shell有效)導出環境變量
例 :export $NAME
printenv 顯示環境變量的值。
例:printenv Name
如果您指定 Name 參數,那麼系統将隻顯示與 Name 參數相關聯的值。如果不設定 Name 參數,printenv 指令顯示目前環境,每行顯示一個 Name=Value 序列。
如果指定一個沒有在環境中定義的 Name 參數,printenv 指令傳回退出狀态 1;否則傳回退出狀态 0(零)。
env 允許您顯示您的目前環境或者在一個被改變了的環境下運作一個指定的指令。
如果沒有标志或者參數被指定,env 指令會顯示您的目前環境,每行顯示一個 Name=Value 對。
退出狀态
0 env 成功完成。
1-125 在 env 指令中發生了一個錯誤。
126 由 Command 參數指定的指令被發現了,但是不能被調用。
127 由 Command 參數指定的指令未被發現。
(3)特殊變量(内部變量)
$0 shell或shell腳本的名字
$# 參數的個數
$_ 代表上一個指令的最後一個參數
$$ 代表所在指令的PID(pid就是程序id)
$! 代表最後執行的背景指令的PID
$? 0表示成功 1-255不成功
例:編寫腳本script1.sh
#!/bin/bash
echo “Number of parameters is:” $#
echo “Program name is:” $0
echo “Parameters is:” $*
執行:./script1.sh xiaoming daniu
結果:Number of parameters is:2
Program name is:script1.sh
Parameters is:xiaoming daniu
(4)位置變量
在shell腳本中應有變量,接收實參,這類變量的名稱很特别,分别是1,2,3,…,這類變量稱為位置變量。位置參數1存放在位置變量1中,位置參數2存放位置變量2中,……,在程式中可以使用$1,$2,……來通路。
$1 $2 $3 $數字 必須從1開始,指令行可以向腳本傳遞參數,并可以在腳本中調用
注:當位置變量個數超出9個時,就不能直接引用位置大于9的位置變量了,必須用shift指令移動位置參數。
shift [n]
(5)運算變量
$[$A+$B]或 $(($A+$B))或expr
EXINIT儲存使用vi編輯器的初始化選項。
例:要顯示行号,則如下:
EXINIT='set nu';export EXINIT
HISTSIZE 曆史記錄數
LOGNAME 目前使用者的登入名
HOSTNAME 指主機的名稱
SHELL 前使用者Shell類型
PATH 儲存進行指令或腳本查找的目錄順序。可以在.profile中進行設定。
HOME 用于記錄使用者的主目錄;
PS1=‘[\u@\h \w]\$’ 基名
IFS:用作shell指定的預設域分隔符。
LANGUGE 語言相關的環境變量,多語言可以修改此環境變量
MAIL 目前使用者的郵件存放目錄
PS1 基本提示符,對于root使用者是#,對于普通使用者是$
PS2 附屬提示符,預設是“>”
二,變量的使用
(1) 例:當您在設定别名alias cdnet='cd /etc/sysconfig/network-scripts/',可您下次登入時就無法使用該别名
重新開機系統後均會失效,此時可以在一些檔案中進行設定
此時您可在下面一些檔案中進行設定,分為全局環境有效和局部環境有效
全局環境:/etc/profile /etc/profile,d/* /etc/bashrc
局部環境:~/.bash_profile ~/.bashrc ~/.bash_logout
(2)profile類:
設定環境變量
運作使用者登入要執行的一些指令
bashrc類:
設定别名
設定本地變量
(3)然而shell又分為:互動式登入shell,非互動式登入shell
互動式登入shell時讀取檔案的順序:
/etc/profile-->/etc/profile.d/*-->~/.bash_profile-->~/.bashrc-->/etc/bashrc
非登入式shell時讀取檔案的順序:
~/.bashrc-->/etc/bashrc-->/etc/profile.d/*
例:需要設定cds='cd /usr/local/src'隻對root有用
可以在root家目錄下.bashrc設定
例:設定環境變量FAVORCOLOR對全局有效
在/etc/profile檔案下設定export FAVORCOLOR=blue
或在/etc/profile.d/*下建立檔案設定export FAVORCOLOR=blue
echo $FAVORCOLOR
立即生效 :source /etc/profile
或. /etc/profile
練習1:讓使用者登入進來時候,顯示,hi,i know you,you are root!
可以在/etc/profile檔案下設定echo "Hi,i know you,you are $LOGNAME!"
三,變量使用的技巧
(1)變量指派時,等号左右不能有空格
(2)變量名稱隻能是字母與數字,且不能以數字開頭
(3)若變量值存在空格,則必需以雙引号或單引号包裹起來.
(4)對于特殊字元,單引号不能識别,而雙引号可以識别
(5)"\"既可以作為跳轉字元,也可以作為轉義字元