Shell腳本中的 測試開關 和 特殊參數


1. 測試開關

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

 

2. 特殊參數

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 大的值可以用 ${number} 來訪問


免責聲明!

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



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