$# 傳遞到指令碼的引數個數
$* 以乙個單字串顯示所有向指令碼傳遞的引數
$$ 指令碼執行的當前程序id號
$! 後台執行的最後乙個程序的id號
$@ 與$*相同,但是使用時加引號,並在引號中返回每個引數。
$- 顯示shell使用的當前選項,與set命令功能相同。
$? 顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。
$_ 顯示傳參的最後乙個引數
command > file 將輸出重定向到 file。
command < file 將輸入重定向到 file。
command >> file 將輸出以追加的方式重定向到 file。
n > file 將檔案描述符為 n 的檔案重定向到 file。
n >> file 將檔案描述符為 n 的檔案以追加的方式重定向到 file。
n >& m 將輸出檔案 m 和 n 合併。
n <& m 將輸入檔案 m 和 n 合併。
<< tag 將開始標記 tag 和結束標記 tag 之間的內容作為輸入。
$ command > /dev/null
/dev/null 是乙個特殊的檔案,寫入到它的內容都會被丟棄;如果嘗試從該檔案讀取內容,那麼什麼也讀不到。但是 /dev/null 檔案非常有用,將命令的輸出重定向到它,會起到"禁止輸出"的效果。
如果希望遮蔽 stdout 和 $ command > /dev/null 2>&1
$0 腳 本名字
$1 位置引數 #1
$2 - $9 位置引數 #2 - #9
$ 位置引數 #10
$# 位置引數的個數
"$*" 所有的位置引數(作為單個字串) *
"$@" 所有的位置引數(每個都作為獨立的字串)
$ 傳遞到指令碼中的命令列引數的個數
$ 傳遞到指令碼中的命令列引數的個數
$? 返回值
$$ 指令碼的程序id(pid)
$- 傳遞到指令碼中的標誌(使用set)
$_ 之前命令的最後乙個引數
$! 執行在後台的最後乙個作業的程序id(pid)
-eq 等於
= 等於
== 等於
-ne 不等於
!= 不等於
-lt 小於
\< 小於 (ascii) *
-le 小於等於
-gt 大於
\> 大於 (ascii) *
-ge 大於等於
-z 字串為空
-n 字串不為空
> 大於
>= 大於等於
< 小於
<= 小於等於
-e 檔案是否存在
-s 檔案大小不為0
-f 是乙個標準檔案
-d 是乙個目錄
-r 檔案具有讀許可權
-w 檔案具有寫許可權
-x 檔案具有執行許可權
-h 檔案是乙個符號鏈結
-l 檔案是乙個符號鏈結
-b 檔案是乙個塊裝置
-c 檔案是乙個字元裝置
-g 設定了sgid標記
-p 檔案是乙個管道
-u 設定了suid標記
-s 檔案是乙個socket
-k 設定了"貼上位"
-t 檔案與乙個終端相關聯
-n 從這個檔案最後一次被讀取之後, 它被修改過
-o 這個檔案的宿主是你
-g 檔案的組id與你所屬的組相同
f1 -nt f2 檔案f1比檔案f2新 *
f1 -ot f2 檔案f1比檔案f2舊 *
f1 -ef f2 檔案f1和檔案f2都是同乙個檔案的硬鏈結 *
! "非" (反轉上邊的測試結果)
表示式 含義
$ 變數var的 值, 與$var相同
$ 如果var沒 有被宣告, 那麼就以$default作為其值 *
$ 如果var沒 有被宣告, 或者其值為空, 那麼就以$default作為其值 *
$ 如果var沒 有被宣告, 那麼就以$default作為其值 *
$ 如果var沒 有被宣告, 或者其值為空, 那麼就以$default作為其值 *
$ 如果var聲 明了, 那麼其值就是$other, 否則就為null字串
$ 如 果var被設定了, 那麼其值就是$other, 否則就為null字串
$ 如果var沒 被宣告, 那麼就列印$err_msg *
$ 如果var沒 被設定, 那麼就列印$err_msg *
$ 匹配之前所有以varprefix開頭進行宣告的變數
$ 匹配之前所有以varprefix開頭進行宣告的變數
$ $string的 長度
$ 在$string中, 從位置$position開始提取子串
$ 在$string中, 從位置$position開始提取長度為$length的子串
$ 從 變數$string的開頭, 刪除最短匹配$substring的子串
$ 從 變數$string的開頭, 刪除最長匹配$substring的子串
$ 從 變數$string的結尾, 刪除最短匹配$substring的子串
$ 從 變數$string的結尾, 刪除最長匹配$substring的子串
$ 使用$replacement, 來代替第乙個匹配的$substring
$ 使 用$replacement, 代替所有匹配的$substring
$ 如 果$string的字首匹配$substring, 那麼就用$replacement來代替匹配到的$substring
$ 如果$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*
if [ condition ] 測 試結構
if [[ condition ]] 擴 展的測試結構
array[1]=element1 數 組初始化
[a-z] 正 則表示式的字元範圍
$ 引數替換
$ 間 接變數引用
**塊大 括號擴充套件
( command1; command2 ) 子shell中 執行的命令組
array=(element1 element2 element3) 陣列初始化
result=$(command) 在 子shell中執行命令, 並將結果賦值給變數
>(command) 進 程替換
<(command) 進 程替換
(( var = 78 )) 整型運算
var=$(( 20 + 5 )) 整型運算, 並將結果賦值給變數
"$variable" " 弱"引用 'string' "強"引用
result=`command` 在 子shell中執行命令, 並將結果賦值給變數
shell 函式與內建變數
傳遞到指令碼的引數個數 以乙個單字串顯示所有向指令碼傳遞的引數 指令碼執行的當前程序id號 後台執行的最後乙個程序的id號 與 相同,但是使用時加引號,並在引號中返回每個引數。顯示shell使用的當前選項,與set命令功能相同。顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。顯示傳參的...
shell內建變數
shell內部變數 shell 顯示當前系統用的shell bash 顯示bash路徑 bash subshell 提示當前subshell的層次 bash version 顯示bash版本 bash versinfo n 顯示bash安裝資訊的乙個6元素陣列,與 bash version 很像 d...
shell內建變數
特殊的shell變數 變數含義 0指令碼名 1 9 位置引數1 9 位置引數10 引數的個數 所有位置引數,加上引號後表示當做乙個字串 所有的位置引數,加上引號無影響,表示當做單個字串 獲取執行上乙個指令的執行狀態返回值 0為成功,非零為失敗 獲取當前執行shell的程序號 獲取上乙個在後台工作的程...