linux shell bash 內置變量參考


 

特殊的shell變量

變量 含義
$0 腳本名
$1 -$9 位置參數1-9
${10} 位置參數10
$# 位置參數的個數
"$*" 所有位置參數(作為單個字符串)
"$@" 所有位置參數(每個作為單獨字符串)
${#*} 傳遞到腳本中的命令行參數的個數
${#*} 傳遞到腳本中的命令行參數的個數
$? 返回值
$$ 腳本進程的PID
$- 傳遞到腳本中的標識
$_ 之前命令的最后一個參數
$! 運行在后台的最后一個作業的進程ID(PID)

測試操作: 二元比較

算 術比較

操作符 含義
-eq 等於
-ne 不等於
-lt或((<)) 小於
-le或((<=)) 小於等於
-gt 或((>)) 大於
-ge 大於等於

字符串比較

操作符 含義
=  
==  
!=  
< 小於(ASCII)
> 大於(ASCII)
-z 字符串為空
-n 字符串不為空

果在雙中括號 [[ ... ]] 測試結構中使用的話, 那么就不需要使用轉義符\了.

文件類型操作

操作符 含義
-e 文件是否
-f 標准文件
-d 目錄
-h hard link鏈接
-L link
-b 塊設備
-c 字符設備
-p 管道
-S socket套接字
-t 文件與終端相關聯
-N 文件最后一次讀取后被修改過
-O 文件屬主是自己
-G 組id與執行者一致
-s 文件大小不為0
-r 文件具有讀權限
-w 文件具有寫權限
-x 文件具有執行權限
-g 設置了sgid標記
-u 設置了suid標記
-k 設置了黏貼位
file1 -nt file2 file1比文件file2新
file1 -ot file2 file1比file2舊
file1 -ef file2 fiel1和fiel2是同一個文件的硬鏈接

參數替換和擴展

表達式 含義
${var_DEFAULT} 如果var沒 有被聲明, 那么就以$DEFAULT作為其值 *
${var=DEFAULT} 如果var沒 有被聲明, 那么就以$DEFAULT作為其值 *
${var:-DEFAULT} 如果var沒 有被聲明, 或者其值為空, 那么就以$DEFAULT作為其值 *
${var:=DEFAULT} 如果var沒 有被聲明, 或者其值為空, 那么就以$DEFAULT作為其值 *
${var+OTHER} 如果var聲 明了, 那么其值就是$OTHER, 否則就為null字符串
${var:+OTHER} 如 果var被設置了, 那么其值就是$OTHER, 否則就為null字符串
${var?ERR_MSG} 如果var沒 被聲明, 那么就打印$ERR_MSG*
${var:?ERR_MSG} 如果var沒 被設置, 那么就打印$ERR_MSG*
${!varprefix*} 匹配之前所有以varprefix開頭進行聲明的變量
${!varprefix@} 匹配之前所有以varprefix開頭進行聲明的變量

字符串操作

表達式 含義
${#string} $string的 長度
${string:position} 在$string中, 從位置$position開始提取子串
${string:position:length} 在$string中, 從位置$position開始提取長度為$length的子串
${string#substring} 從 變量$string的開頭, 刪除最短匹配$substring的子串
${string##substring} 從 變量$string的開頭, 刪除最長匹配$substring的子串
${string%substring} 從 變量$string的結尾, 刪除最短匹配$substring的子串
${string%%substring} 從 變量$string的結尾, 刪除最長匹配$substring的子串
${string/substring/replacement} 使用$replacement, 來代替第一個匹配的$substring
${string//substring/replacement} 使 用$replacement, 代替所有匹配的$substring
${string/#substring/replacement} 如 果$string的前綴匹配$substring, 那么就用$replacement來代替匹配到的$substring
${string/%substring/replacement} 如果$string的后綴匹配$substring, 那么就用$replacement來代替匹配到的$substring
expr match "$string" '$substring' 匹配$string開頭的$substring* 的長度
expr "$string" : '$substring' 匹 配$string開頭的$substring* 的長度
expr index "$string" $substring 在$string中匹配到的$substring的第一個字符出現的位置
expr substr $string $position $length 在$string中 從位置$position開始提取長度為$length的子串
expr match "$string" '\($substring\)' 從$string的 開頭位置提取$substring*
expr "$string" : '\($substring\)' 從$string的 開頭位置提取$substring*
expr match "$string" '.*\($substring\)' 從$string的 結尾提取$substring*
expr "$string" : '.*\($substring\)' 從$string的 結尾提取$substring*

$substring是一個正 則表達式.

一些結構的匯總

表達式 含義
if [ CONDITION ] 測 試結構
if [[ CONDITION ]] 擴 展的測試結構
Array[1]=element1 數 組初始化
[a-z] 正 則表達式的字符范圍
${!variable} 間 接變量引用
{ command1; command2; . . . commandN; } 代碼塊
{string1,string2,string3,...} 大 括號擴展
( command1; command2 ) 子shell中 執行的命令組
Array=(element1 element2 element3) 數組初始化
result=$(COMMAND) 在 子shell中執行命令, 並將結果賦值給變量
>(COMMAND) 進程替換
<(COMMAND) 進 程替換
(( var = 78 )) 整型運算
var=$(( 20 + 5 )) 整型運算, 並將結果賦值給變量
"$variable"  
result=COMMAND 在 子shell中運行命令, 並將結果賦值給變量

參考http://blog.csdn.net/u012749933/article/details/48030503


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM