Shell指令碼中的 測試開關 和 特殊引數

2021-09-06 19:11:23 字數 2331 閱讀 7738

shell中自帶的一些測試指令, 下表列出這些測試指令的含義以及是否可用於 test命令, bash, ksh.

開關

test

bash

ksh

定義

-a file

支援支援

只是檔案存在

-b file

支援支援

支援檔案存在, 並且是乙個類似於 /dev 下的磁碟裝置之類的塊檔案

-c file

支援支援

支援檔案存在, 並且是乙個類似於 /dev 下的tty裝置之類的字元檔案

-d file

支援支援

支援檔案存在, 並且是乙個標準目錄

-e file

支援支援

支援只是檔案存在

-f file

支援支援

支援檔案存在, 並且是乙個類似於平面檔案的標準檔案

-g file

支援支援

支援檔案存在, 並且是乙個set-group-id. 這是指對檔案可執行性的使用者有效組進行改變的檔案許可

-g file

支援支援

支援檔案存在, 並且它的組所有權是使用者的有效組id

-h file

支援支援

支援檔案存在, 並且它是乙個符號鏈結. 和 -l 一樣

-k file

支援支援

支援檔案存在, 並且它粘著位設定. 這意味著只有檔案的所有者或者目錄的所有者可以刪除檔案

-l string

支援和類似於 /usr/bin/test -l string -gt 5 && echo 的數字值, 比較 string 長度

-l file

支援支援

支援檔案存在, 並且它是乙個符號鏈結. 和 -h 一樣

-n string

支援支援

支援string 的長度非零

-n file

支援支援

檔案存在, 但是自從最近一次讀入之後, 已經被修改

-o option

支援支援

支援如果 shell 的 option 被開啟, 返回真, 例如 set -x

-o file

支援支援

支援檔案存在, 並且它的所有者由有效的使用者id決定

-p file

支援支援

支援檔案存在, 並且它是乙個命名管道 (or fifo)

-r file

支援支援

支援檔案存在, 並且可讀

-s file

支援支援

支援檔案存在, 並且它的大小大於 0 位元組

-s file

支援支援

支援檔案存在, 並且它是乙個 socket

-t [fd]

支援支援

支援在乙個終端開啟 fd(檔案描述符), 預設是 stdout

-u file

支援支援

支援檔案存在, 並且 set-user-id 被設定

-w file

支援支援

支援檔案存在, 並且可寫

-x file

支援支援

支援檔案存在, 並且可執行

-z string

支援支援

支援string 的長度為 0

shell中的特殊引數是shell的內部變數, 要用 字首$ 來使用.

比如 echo $? 就是獲取 shell內部變數 "?" 的值.

內容變數一覽:

引數

定義*

從 1 開始, 完成所有位置變數列表. 如果被雙引號引上, 成為有 ifs (內部檔案分隔符)值的第乙個字元分割的單詞

@從 1 開始, 完成所有位置變數列表. 如果被雙引號引上, 將每乙個位置引數變成單個詞

#以十進位制表示的位置引數數目

?最後或者最近乙個前台任務的返回碼. 如果任務被乙個訊號殺掉, 返回值為 128 加上訊號的值. 例如: 標準kill訊號值是 15, 那麼返回值就是 143

-所有傳送給 shell 的標誌, 或者 set 命令提供的標誌

$shell 程序id. 如果在子shell中, 它被擴充套件為當前shell的值, 而不是子shell的值

!最近被放到後台執行的命令的程序id

_擴充套件為前乙個命令的最後乙個引數

0擴充套件為shell或者shell指令碼的名字

1…9提供給shell, 函式或者指令碼的位置引數. 比 9 大的值可以用 $ 來訪問

測試開發必備技能之shell指令碼程式設計二 多測師

shell指令碼練習 1,啟動 關閉 重啟 檢視狀態nginx指令碼 root localhost xiaoshu5 vim xiaoshu5.sh bin bash if 1 start then service nginx start echo start elif 1 stop then se...

軟體測試開發和軟體測試的區別

按照字面意思理解,大家或許會覺得測試開發是指既能開發產品又能測試產品的 技術王者 但其實並非如此,今天我們就來看看這兩者到底有什麼區別。什麼是軟體測試?顧名思義,就是在規定的條件下對乙個產品或程式進行操作,以發現程式錯誤,衡量軟體質量,並對其是否能滿足設計要求進行評估的過程。測試工程師主要工作內容是...

shell指令碼中》 dev null 和 2 1

shell中可能經常能看到 dev null 2 1 命令的結果可以通過 的形式來定義輸出 dev null 代表空裝置檔案 代表重定向到 例如 echo 123 home 123.txt 1 表示stdout標準輸出,系統預設值是1,所以 dev null 等同於 1 dev null 2 表示s...