option

http://linux.vbird.org/linux_basic/0340bashshell-scripts.php#test

-e 該『檔名』是否存在?(常用)
-f 該『檔名』是否存在且為檔案(file)?(常用)
-d 該『檔名』是否存在且為目錄(directory)?(常用)
-b 該『檔名』是否存在且為一個 block device 裝置?
-c 該『檔名』是否存在且為一個 character device 裝置?
-S 該『檔名』是否存在且為一個 Socket 檔案?
-p 該『檔名』是否存在且為一個 FIFO (pipe) 檔案?
-L 該『檔名』是否存在且為一個連結檔?
-r 偵測該檔名是否存在且具有『可讀』的權限?
-w 偵測該檔名是否存在且具有『可寫』的權限?
-x 偵測該檔名是否存在且具有『可執行』的權限?
-u 偵測該檔名是否存在且具有『SUID』的屬性?
-g 偵測該檔名是否存在且具有『SGID』的屬性?
-k 偵測該檔名是否存在且具有『Sticky bit』的屬性?
-s 偵測該檔名是否存在且為『非空白檔案』?
[ -a FILE ]  如果 FILE 存在則為真。  
[ -b FILE ]  如果 FILE 存在且是一個塊特殊文件則為真。  
[ -c FILE ]  如果 FILE 存在且是一個字特殊文件則為真。  
[ -d FILE ]  如果 FILE 存在且是一個目錄則為真。  
[ -e FILE ]  如果 FILE 存在則為真。  
[ -f FILE ]  如果 FILE 存在且是一個普通文件則為真。  
[ -g FILE ]  如果 FILE 存在且已經設置了SGID則為真。  
[ -h FILE ]  如果 FILE 存在且是一個符號連接則為真。  
[ -k FILE ]  如果 FILE 存在且已經設置了粘制位則為真。  
[ -p FILE ]  如果 FILE 存在且是一個名字管道(F如果O)則為真。  
[ -r FILE ]  如果 FILE 存在且是可讀的則為真。  
[ -s FILE ]  如果 FILE 存在且大小不為0則為真。  
[ -t FD ]  如果文件描述符 FD 打開且指向一個終端則為真。  
[ -u FILE ]  如果 FILE 存在且設置了SUID (set user ID)則為真。  
[ -w FILE ]  如果 FILE 如果 FILE 存在且是可寫的則為真。  
[ -x FILE ]  如果 FILE 存在且是可執行的則為真。  
[ -O FILE ]  如果 FILE 存在且屬有效用戶ID則為真。  
[ -G FILE ]  如果 FILE 存在且屬有效用戶組則為真。  
[ -L FILE ]  如果 FILE 存在且是一個符號連接則為真。  
[ -N FILE ]  如果 FILE 存在 and has been mod如果ied since it was last read則為真。  
[ -S FILE ]  如果 FILE 存在且是一個套接字則為真。  
[ FILE1 -nt FILE2 ]  如果 FILE1 has been changed more recently than FILE2, or 如果 FILE1 exists and FILE2 does not則為真。  
[ FILE1 -ot FILE2 ]  如果 FILE1 比 FILE2 要老, 或者 FILE2 存在且 FILE1 不存在則為真。  
[ FILE1 -ef FILE2 ]  如果 FILE1 和 FILE2 指向相同的設備和節點號則為真。  
[ -o OPTIONNAME ]  如果 shell選項 “OPTIONNAME” 開啟則為真。  
[ -z STRING ]  “STRING” 的長度為零則為真。  
[ -n STRING ] or [ STRING ]  “STRING” 的長度為非零 non-zero則為真。  
[ STRING1 == STRING2 ]  如果2個字符串相同。 “=” may be used instead of “==” for strict POSIX compliance則為真。  
[ STRING1 != STRING2 ]  如果字符串不相等則為真。 
[ STRING1 < STRING2 ]  如果 “STRING1” sorts before “STRING2” lexicographically in the current locale則為真。  
[ STRING1 > STRING2 ]  如果 “STRING1” sorts after “STRING2” lexicographically in the current locale則為真。  
[ ARG1 OP ARG2 ] “OP” is one of -eq, -ne, -lt, -le, -gt or -ge. These arithmetic binary operators return true if “ARG1” is equal to, not equal to, less than, less than or equal to, greater than, or greater than or equal to “ARG2”, respectively. “ARG1” and “ARG2” are integers.

單行

[ "$1" == "clean" ] && echo clean

(or)兩狀況任何一個成立!

[ "${yn}" == "Y" -o "${yn}" == "y" ] && echo "OK, continue" && exit 0
[ "${yn}" == "Y" -o "${yn}" == "y" ]

#可替換為

[ "${yn}" == "Y" ] || [ "${yn}" == "y" ]

(and)兩狀況同時成立!

[ "${yn}" == "Y" -a "${yn}" != "Yes" ] && echo "OK, continue" && exit 0

多行

if [ "${yn}" == "Y" ]; then
    echo "Y"elif [ "${yn}" == "Y" ] || [ "${yn}" == "y" ]; then
    echo "Y or y"else
    echo "N"fi

switch case

case  $PARAM in
  "a")
        echo "a";
    ;;
  "b")
        echo "b";
    ;;
  "b")
        echo "b";
    ;;
  *)
        echo "switch.sh [Command]"
        echo " Command:"
        echo "     a: echo 'a'"
        echo "     b: echo 'b'"
        echo "     c: echo 'c'"
    exit 1
    ;;
esac

results matching ""

    No results matching ""