點擊返回 自學Linux命令行與Shell腳本之路html
11.3-使用變量
Shell腳本的執行一般能夠採用如下幾種方式:
1):bash script-name或sh script-name(推薦使用)
2):path/script-name 或./script-name(當前路徑下執行腳本)
3):source script-name或 . script-name #→注意」.」點號。
4):sh<script-name或cat scripts-name|sh(一樣適合bash)shell
定義變量時,變量名不加美圓符號($,PHP語言中變量須要),如:bash
your_name="runoob.com"
spa
變量名的命名須遵循以下規則:命令行
- 命名只能使用英文字母,數字和下劃線,首個字符不能以數字開頭
- 中間不能有空格,可使用下劃線(_)
- 不能使用標點符號
- 不能使用bash裏的關鍵字(可用help命令查看保留關鍵字)
- 變量名和等號之間不能有空格
- 若是一行只有一條命令,則每一行不用以分號結尾,每一條命令以換行分隔
若是一行有多條命令,則每一條命令以分號分隔,但建議每行只有一條命令
1.普通變量:
1.1 環境變量:變量必須是大寫3d
- 配置永久性的環境變量,全局變量的配置文件:/etc/profile 、/etc/bashrc 基本上使用 /etc/profile
- 配置用戶的環境變量的配置文件,分別是:用戶的主目錄下的隱藏文件:~/.bash_profile 、 ~/.bash_bashrc
- 臨時設置 # export ZSY=1
- 設置全部用戶生效的目錄 :/etc/profile.d/ :目錄下必須是腳本不然沒法使用
- 若是寫一個JAVA的腳本,要把JAVA環境變量放入腳本內,特別是定時任務執行的時候
- 顯示環境變量:
# env //* 顯示的環境變量
# set //* 顯示的環境變量更多
- 取消環境變量
# unset <環境變量名> //* 臨時取消變量
進入文件刪除變量
1.2 環境變量的意義:htm
- UID :當前用戶的UID
- USER :當前登陸的用戶
- HOME :當前的用戶主目錄
- _= :上一條命令的最後一個參數
- BASH :調用實例時使用的全路徑
- PS1 :當前的終端
- PATH :命令所在路徑
1.3 局部變量:blog
- 通常連續的字符串,數字,路徑等能夠不加任何引號,不過無引號的狀況最好用雙引號替代之。
- 若是變量中使用其餘變量時,則不可使用單引號不然沒法使用:以下:
- 若是變量中有空格的話,就必須使用雙引號不然沒法輸出:以下:
1.4 引號的意義進程
- 無引號:把內容輸出出來,會將未含有空格的字符串視爲一個總體輸出; 若是有命令(要在反引號中的)、變量、特殊轉義符解析出結果真後子在輸出最終內容來,若是字符串中有空格等特殊字符則則不能完整輸出,須要加雙引號,通常連續的字符串,數字,路徑等能夠不加任何引號, 不過無引號的狀況最好用雙引號替代之。
- 單引號:能夠說是所見即所得:即將單引號內的全部內容都原樣輸出,或者描述爲裏面看到的是什麼就會輸出什麼
- 雙引號:把雙引號內的全部內容都輸出出來;若是有命令(要在反引號中的)、變量、特殊轉義符解析出結果真後子在輸出最終內容來
- 反引號:通常用於執行命令,執行的時候命令會執行,同理可使用 a=$(ls):結果相同 (注意反引號是鍵盤~下面的`)
1.5 變量定義小結:
普通變量:
a=1 連續的數字字符串
a="/etc/rc.local $USER" 解析結果後輸出
a='$USER' 原樣輸出
命令內容定義:
a=`ls` 反引號 //* 將反引號中字符當作命令輸出
a=$(ls)ip
2. 特殊變量:
2.1 位置變量
- $n 獲取當前執行的shell腳本的第n個參數值(參數值默認以空格區分,若是參數加了雙引號,則將雙引號的整個做爲一個參數, 無論其中是否有空格),n=1..9 ,當 n 爲0時表示腳本的文件名,若是n大於9,用大括號括起來${10},參數以空格隔開。
- $0 獲取當前腳本自己的名字
- $1 獲取當前傳遞給該shell腳本的第一個參數
- $2 獲取當前傳遞給該shell腳本的第二個參數
- $# 獲取當前傳給腳本的參數個數
- $$ 獲取當前腳本運行的當前進程 PID 號
- $@ 獲取當前傳給腳本的全部參數的列表
- $* 獲取當前以一個單字符串顯示全部向腳本傳遞的參數,與位置變量不一樣,參數可超過9個
- $? 是顯示最後命令的退出狀態,0表示沒有錯誤,其餘表示有錯誤
例1:
例2:
例3: