minix操作系统最新版本(3.1.1)的源代码

源代码在线查看: expr.1

软件大小: 3310 K
上传用户: xiongxianwang8
关键词: minix 操作系统 版本 源代码
下载地址: 免注册下载 普通下载 VIP

相关代码

				.TH EXPR 1				.SH NAME \"	Copyright (C) 1989 by Kenneth Almquist.				expr, test, [ \- evaluate expressions				.SH SYNOPSIS				.B expr				.I expression				.br				.B test				.I expression				.br				.B [				.I expression				.B ]				.SH DESCRIPTION				.B Expr				evaluates the expression and prints the result.				.B Test				evaluates the expression without printing the result.				The ``[''				command is a synonym for				.BR test ;				when invoked under this name				the last argument to				.B expr				must be a ``]'', which is deleted and not considered part of the expression.				.PP				Three data types may occur in the				.IR expression :				string, integer, and boolean.				The rules for conversion are as follows:				.sp				.nr i 2				.ta \nii				.in +\nii				.ti -\nii				\fIstring\fR\->\fIinteger\fR	Done via				.BR atoi (3).				.ti -\nii				\fIinteger\fR\->\fIstring\fR	Convert to decimal representation.				.ti -\nii				\fIstring\fR\->\fIboolean\fR	"" \-> false, everything else to true.				.ti -\nii				\fIboolean\fR\->\fIstring\fR	false \-> "", true \-> "true".				.ti -\nii				\fIinteger\fR\->\fIboolean\fR	0 \-> false, everything else to true.				.ti -\nii				\fIboolean\fR\->\fIinteger\fR	false \-> 0, true \-> 1.				.in -\nii				.PP				Any argument to				.B expr				which is not a legal operator is treated as a string operand of type				.BR string .				.PP				As a special case, if				.I expression				is omitted, the result is false.				.PP				We now list the operators.  The syntax				.sp				.ti +8				\fIinteger\fB op \fIinteger\fR \-> \fIboolean\fB (3)\fR				.sp				means that \fBop\fR is a binary operator which takes operands of type				\fIinteger\fR and produces a result of type \fIboolean\fR.				The ``(3)'' means that the priority of \fBop\fR is 3.				Operands are automatically converted to the appropriate type.  The type				\fIany\fR is used for operator that take operands of any type.				.nr p 1				.de b				.TP 0.5i				\fI\\$1\fB \\$2 \fI\\$3\fR \-> \\fI\\$4\\fR  (\\np)				..				.de u				.TP 0.5i				\\$1 \fI\\$2\fR \-> \\fI\\$3\\fR  (\\np)				..				.b any \-o any any				Returns the value of the left hand operand if the left hand operand				would yield				.B true				if converted to type				.BR boolean ,				and the value of the right hand operand otherwise.				The right hand operand is evaluated only if necessary.				``|'' is a synonym for ``\-o''.				.nr p \np+1				.b any -a any any				Returns the value of the left hand operand if the left hand operand				would yield				.B false				if converted to type				.BR boolean ,				and the value of the right hand operand otherwise.				The right hand operand is evaluated only if necessary.				``&'' is a synonym for ``\-a''.				.nr p \np+1				.u ! boolean boolean				Returns true if the operand is false, and false if the operand is true.				.nr p \np+1				.b string = string boolean				True if the two strings are equal.				.b string != string boolean				True if the two strings are not equal.				.b integer \-eq integer boolean				True if the two operands are equal.				.b integer \-ne integer boolean				True if the two operands are not equal.				.b integer \-gt integer boolean				True if the first operand is greater than the second one.				.b integer \-lt integer boolean				True if the first operand is less than the second one.				.b integer \-ge integer boolean				True if the first operand is greater than or equal to the second one.				.b integer \-le integer boolean				True if the first operand is less than or equal to the second one.				.nr p \np+1				.b integer + integer integer				Add two integers.				.b integer \- integer integer				Subtract two integers.				.nr p \np+1				.b integer * integer integer				Multiply two integers.  ``*'' is special to the shell, so you generally				have to write this operator as ``\e*''.				.b integer / integer integer				Divide two integers.				.b integer % integer integer				Returns the remainder when the first operand is divided by the second one.				.nr p \np+1				.b string : string "integer or string"				The second operand is interpreted as a regular expression (as in the				System V				.B ed				program).				This operator attempts to match part (or all) of the first operand				with the regular expression.  The match must start at the beginning of				the first operand.				If the regular expression contains \e( \e) pairs, then the result				of this operator is the string which is matched by the regular expression				between these pairs, or the null string if no match occurred.  Otherwise,				the result is the number of characters matched by the regular expression,				or zero if no no match occurred.				.nr p \np+1				.u \-n string integer				Returns the number of characters in the string.				.u \-z string boolean				Returns true if the string contains zero characters.				.u \-t integer boolean				Returns true if the specified file descriptor is associated with a tty.				.PP				The remaining operators all deal with files.  Except as noted, they return				false if the				specified file does not exist.  The ones dealing with permission use				the effective user and group ids of the shell.				.u \-r string boolean				True if you have read permission on the file.				.u \-w string boolean				True if you have write permission on the file.				.u \-x string boolean				True if you have execute permission on the file.				.u \-f string boolean				True if the file is a regular file.				.u \-d string boolean				True if the file is a directory.				.u \-c string boolean				True if the file is a character special file.				.u \-b string boolean				True if the file is a block special file.				.u \-p string boolean				True if the file is a named pipe (i.e. a fifo).				.u \-u string boolean				True if the file is setuid.				.u \-g string boolean				True if the file is setgid.				.u \-k string boolean				True if the file has the sticky bit set.				.u \-s string "integer or boolean"				Returns the size of the file, or 0 if the file does not exist.				.u \-h string boolean				True if the file is a symlink.  This is the only file test operator that				does not follow symlinks, all others do.  So ``\-d'' and ``\-h''				are both true on a symlink pointing to a directory.				``\-L'' is a synonym for ``\-h''.				.SH "EXIT CODE"				0 if the result of 				.I expression				would be				.B true				if the result were converted to				.BR boolean .				.br				1 if the result of 				.I expression				would be				.B false				if the result were converted to				.BR boolean .				.br				2 if				.I expression				is syntactically incorrect.				.SH EXAMPLES				.TP 0.5i				filesize=`expr \-s file`				Sets the shell variable				.I filesize				to the size of				.IR file .				.TP 0.5i				if [ \-s file ]; then command; fi				Execute				.I command				if				.I file				exists and is not empty.				.TP 0.5i				x=`expr "$x" : '.\\{4\\}\\(.\\{0,3\\}\\)'`				Sets				.I x				to the substring of				.I x				beginning after the fourth character of				.I x				and continuing for three characters or until the end of the string,				whichever comes first.				.TP 0.5i				x=`expr X"$x" : X'.\\{4\\}\\(.\\{0,3\\}\\)'`				This example is the same as the previous one, but it uses a leading				``X'' to make things work when the value of				.I x				looks like an operator.				.SH BUGS				The relational operators of the System V				.B expr				command are not implemented.				.PP				Certain features of this version of				.B expr				are not present in System V, so care should be used when writing				portable code.				.SH COPYRIGHT				Kenneth Almquist.							

相关资源