Shell編程之 “test”命令

今天在編寫Shell程序例子時看到 if 後面不是 [ express ] 而是直接跟的 if test express,例子如下
#!/bin/bash
#math operation

echo "Math Operation."

if test $# = 3
then
  case $2 in
    +) let z=$1+$3;;
    -) let z=$1-$3;;
    /) let z=$1/$3;;
    x|X) let z=$1*$3;;
    *) echo Warning - $2 invalid operation. Only +,-,*,/ operation allowed
    exit;;
  esac
  echo Answer is $z
else
  echo "Usage - $0 value1 operator value2."
  echo "    Where, value1 and value2 numeric values."
  echo "        Operation can be +,-,*,/ (For Multiplication)"
fi

Linux 中的 test 命令描述:

mgr142:/home/chan/script # help test
test: test [expr]
    Exits with a status of 0 (true) or 1 (false) depending on
    the evaluation of EXPR.  Expressions may be unary or binary.  Unary
    expressions are often used to examine the status of a file.  There
    are string operators as well, and numeric comparison operators.

    File operators:

        -a FILE        True if file exists.
        -b FILE        True if file is block special.
        -c FILE        True if file is character special.
        -d FILE        True if file is a directory.
        -e FILE        True if file exists.
        -f FILE         True if file exists and is a regular file.
        -g FILE        True if file is set-group-id.
        -h FILE        True if file is a symbolic link.
        -L FILE        True if file is a symbolic link.
        -k FILE        True if file has its `sticky' bit set.
        -p FILE        True if file is a named pipe.
        -r FILE        True if file is readable by you.
        -s FILE        True if file exists and is not empty.
        -S FILE        True if file is a socket.
        -t FD          True if FD is opened on a terminal.
        -u FILE        True if the file is set-user-id.
        -w FILE        True if the file is writable by you.
        -x FILE        True if the file is executable by you.
        -O FILE        True if the file is effectively owned by you.
        -G FILE        True if the file is effectively owned by your group.
        -N FILE        True if the file has been modified since it was last read.

      FILE1 -nt FILE2  True if file1 is newer than file2 (according to modification date).

      FILE1 -ot FILE2  True if file1 is older than file2.

      FILE1 -ef FILE2  True if file1 is a hard link to file2.

    String operators:

        -z STRING      True if string is empty.

        -n STRING
        STRING         True if string is not empty.
        STRING1 = STRING2		True if the strings are equal.    ###在上面例子中是屬於此情景###
        STRING1 != STRING2 	True if the strings are not equal.
        STRING1 < STRING2 		True if STRING1 sorts before STRING2 lexicographically.
        STRING1 > STRING2  	True if STRING1 sorts after STRING2 lexicographically.

    Other operators:

        -o OPTION      True if the shell option OPTION is enabled.
        ! EXPR         True if expr is false.
        EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.
        EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.

        arg1 OP arg2   Arithmetic tests.  OP is one of -eq, -ne, -lt, -le, -gt, or -ge.

    Arithmetic binary operators return true if ARG1 is equal, not-equal,
    less-than, less-than-or-equal, greater-than, or greater-than-or-equal
    than ARG2.
發佈了34 篇原創文章 · 獲贊 4 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章