利用者:nishinsu/sandbox/Test (UNIX)
ここはNishinsuさんの利用者サンドボックスです。編集を試したり下書きを置いておいたりするための場所であり、百科事典の記事ではありません。ただし、公開の場ですので、許諾されていない文章の転載はご遠慮ください。
登録利用者は自分用の利用者サンドボックスを作成できます(サンドボックスを作成する、解説)。 この利用者の下書き:User:Nishinsu/sandbox/dirname・ その他のサンドボックス: 共用サンドボックス | モジュールサンドボックス 記事がある程度できあがったら、編集方針を確認して、新規ページを作成しましょう。 |
test は Unix系OSで使われる、条件式を評価するコマンドラインプログラムである。
構文
[編集]test expression
または
[ expression ]
説明
[編集]The test
command in Unix evaluates the expression
parameter. In some shells such as FreeBSD sh(1)
it is a shell builtin, even though the external version still exists. In the second form of the command, the [ ]
(brackets) must be surrounded by blank spaces. This is because [
is a program and POSIX compatible shells require a space between the program name and its arguments. One must test explicitly for file names in the C shell. File-name substitution (globbing) causes the shell script to exit.
引数
[編集]The following arguments are used to construct this parameter:
-e FileName - FileNameが存在すれば真。
All remaining arguments return true if the object (file or string) exists, and the condition specified is true.
-b Filename - Returns a True exit value if the specified FileName exists and is a block special file -c FileName - FileName is a character special file -d FileName - FileName is a directory -f FileName - FileName is a regular file -g FileName - FileName's Set Group ID bit is set -h FileName - FileName is a symbolic link -k FileName - FileName's sticky bit is set -L FileName - FileName is a symbolic link -p FileName - FileName is a named pipe (FIFO) -r FileName - FileName is readable by the current process -s FileName - FileName has a size greater than 0 -t FileDescriptor - FileDescriptor is open and associated with a terminal -u FileName - FileName's Set User ID bit is set
-w FileName - FileName's write flag is on. However, the FileName will not be writable on a read-only file system even if test indicates true
-x FileName - FileName's execute flag is on If the specified file exists and is a directory, theTrue
exit value indicates that the current process has permission to changecd
into the directory.
file1 -nt file2 - file1 is newer than file2 file1 -ot file2 - file1 is older than file2 file1 -ef file2 - file1 is another name for file2 - (symbolic link or hard link)
String arguments
[編集]In Perl, these sections are reversed: eq
is a string operator and ==
is a numerical operator, and so on for the others.
-n String1 - the length of the String1 variable is nonzero -z String1 - the length of the String1 variable is 0 (zero) String1 = String2 - String1 and String2 variables are identical String1 != String2 - String1 and String2 variables are not identical String1 - String1 variable is not a null string
Number arguments
[編集]Integer1 -eq Integer2 - Integer1 and Integer2 variables are algebraically equal -ne - not equal -gt - greater than -ge - greater or equal -lt - less than -le - less or equal
Operators
[編集]test
arguments can be combined with the following operators:
! - Unary negation operator -a - Binary AND operator -o - Binary OR operator (the-a
operator has higher precedence than the-o
operator) \(Expression\) - Parentheses for grouping must be escaped with a backslash\
The -a
and -o
operators, along with parentheses for grouping, are XSI extensions[1] and are therefore not portable. In portable shell scripts, the same effect may be achieved by connecting multiple invocations of test
together with the &&
and ||
operators and parentheses.
Exit Status
[編集]This command returns the following exit values:
0 - The Expression parameter is true 1 - The Expression parameter is false or missing >1 - An error occurred
Examples
[編集]1. To test whether a file is nonexistent or empty, type:
if test ! -s "$1"
then
echo $1 does not exist or is empty.
fi
If the file specified by the first positional parameter to the shell procedure, $1, does not exist or is of size 0, the test command displays the message. If $1 exists and has a size greater than 0, the test command displays nothing.
Note: There must be a space between the -s function and the file name.
The quotation marks around $1 ensure that the test works properly even if the value of $1 is a null string. If the quotation marks are omitted and $1 is the empty string, the test command displays the error message:
test: argument expected.
2. To do a complex comparison, type:
if [ $# -lt 2 -o ! -e "$1" ]
then
exit
fi
If the shell procedure is given fewer than two positional parameters or the file specified by $1 does not exist, then the shell procedure exits. The special shell variable $# represents the number of positional parameters entered on the command line that starts this shell procedure.