read.1p (7611B)
- '\" et
- .TH READ "1P" 2017 "IEEE/The Open Group" "POSIX Programmer's Manual"
- .\"
- .SH PROLOG
- This manual page is part of the POSIX Programmer's Manual.
- The Linux implementation of this interface may differ (consult
- the corresponding Linux manual page for details of Linux behavior),
- or the interface may not be implemented on Linux.
- .\"
- .SH NAME
- read
- \(em read from standard input into shell variables
- .SH SYNOPSIS
- .LP
- .nf
- read \fB[\fR-r\fB] \fIvar\fR...
- .fi
- .SH DESCRIPTION
- The
- .IR read
- utility shall read a single logical line from standard input into one
- or more shell variables.
- .P
- By default, unless the
- .BR \-r
- option is specified,
- <backslash>
- shall act as an escape character. An unescaped
- <backslash>
- shall preserve the literal value of the following character, with the
- exception of a
- <newline>.
- If a
- <newline>
- follows the
- <backslash>,
- the
- .IR read
- utility shall interpret this as line continuation. The
- <backslash>
- and
- <newline>
- shall be removed before splitting the input into fields. All other
- unescaped
- <backslash>
- characters shall be removed after splitting the input into fields.
- .P
- If standard input is a terminal device and the invoking shell is
- interactive,
- .IR read
- shall prompt for a continuation line when it reads an input line ending
- with a
- <backslash>
- <newline>,
- unless the
- .BR \-r
- option is specified.
- .P
- The terminating
- <newline>
- (if any) shall be removed from the input and the results shall be split
- into fields as in the shell for the results of parameter expansion (see
- .IR "Section 2.6.5" ", " "Field Splitting");
- the first field shall be assigned to the first variable
- .IR var ,
- the second field to the second variable
- .IR var ,
- and so on. If there are fewer fields than there are
- .IR var
- operands, the remaining
- .IR var s
- shall be set to empty strings. If there are fewer
- .IR var s
- than fields, the last
- .IR var
- shall be set to a value comprising the following elements:
- .IP " *" 4
- The field that corresponds to the last
- .IR var
- in the normal assignment sequence described above
- .IP " *" 4
- The delimiter(s) that follow the field corresponding to the last
- .IR var
- .IP " *" 4
- The remaining fields and their delimiters, with trailing
- .IR IFS
- white space ignored
- .P
- The setting of variables specified by the
- .IR var
- operands shall affect the current shell execution environment; see
- .IR "Section 2.12" ", " "Shell Execution Environment".
- If it is called in a subshell or separate utility execution
- environment, such as one of the following:
- .sp
- .RS 4
- .nf
- (read foo)
- nohup read ...
- find . -exec read ... \e;
- .fi
- .P
- .RE
- .P
- it shall not affect the shell variables in the caller's environment.
- .SH OPTIONS
- The
- .IR read
- utility shall conform to the Base Definitions volume of POSIX.1\(hy2017,
- .IR "Section 12.2" ", " "Utility Syntax Guidelines".
- .P
- The following option is supported:
- .IP "\fB\-r\fP" 10
- Do not treat a
- <backslash>
- character in any special way. Consider each
- <backslash>
- to be part of the input line.
- .SH OPERANDS
- The following operand shall be supported:
- .IP "\fIvar\fR" 10
- The name of an existing or nonexisting shell variable.
- .SH STDIN
- The standard input shall be a text file.
- .SH "INPUT FILES"
- None.
- .SH "ENVIRONMENT VARIABLES"
- The following environment variables shall affect the execution of
- .IR read :
- .IP "\fIIFS\fP" 10
- Determine the internal field separators used to delimit fields; see
- .IR "Section 2.5.3" ", " "Shell Variables".
- .IP "\fILANG\fP" 10
- Provide a default value for the internationalization variables that are
- unset or null. (See the Base Definitions volume of POSIX.1\(hy2017,
- .IR "Section 8.2" ", " "Internationalization Variables"
- for the precedence of internationalization variables used to determine
- the values of locale categories.)
- .IP "\fILC_ALL\fP" 10
- If set to a non-empty string value, override the values of all the
- other internationalization variables.
- .IP "\fILC_CTYPE\fP" 10
- Determine the locale for the interpretation of sequences of bytes of
- text data as characters (for example, single-byte as opposed to
- multi-byte characters in arguments).
- .IP "\fILC_MESSAGES\fP" 10
- .br
- Determine the locale that should be used to affect the format and
- contents of diagnostic messages written to standard error.
- .IP "\fINLSPATH\fP" 10
- Determine the location of message catalogs for the processing of
- .IR LC_MESSAGES .
- .IP "\fIPS2\fP" 10
- Provide the prompt string that an interactive shell shall write to
- standard error when a line ending with a
- <backslash>
- <newline>
- is read and the
- .BR \-r
- option was not specified.
- .SH "ASYNCHRONOUS EVENTS"
- Default.
- .SH STDOUT
- Not used.
- .SH STDERR
- The standard error shall be used for diagnostic messages and
- prompts for continued input.
- .SH "OUTPUT FILES"
- None.
- .SH "EXTENDED DESCRIPTION"
- None.
- .SH "EXIT STATUS"
- The following exit values shall be returned:
- .IP "\00" 6
- Successful completion.
- .IP >0 6
- End-of-file was detected or an error occurred.
- .SH "CONSEQUENCES OF ERRORS"
- Default.
- .LP
- .IR "The following sections are informative."
- .SH "APPLICATION USAGE"
- The
- .BR \-r
- option is included to enable
- .IR read
- to subsume the purpose of the
- .IR line
- utility, which is not included in POSIX.1\(hy2008.
- .SH EXAMPLES
- The following command:
- .sp
- .RS 4
- .nf
- while read -r xx yy
- do
- printf "%s %s\en$yy$xx"
- done < \fIinput_file\fR
- .fi
- .P
- .RE
- .P
- prints a file with the first field of each line moved to the end of the
- line.
- .SH RATIONALE
- The
- .IR read
- utility historically has been a shell built-in. It was separated off
- into its own utility to take advantage of the richer description of
- functionality introduced by this volume of POSIX.1\(hy2017.
- .P
- Since
- .IR read
- affects the current shell execution environment,
- it is generally provided as a shell regular built-in. If it is called
- in a subshell or separate utility execution environment, such as one of
- the following:
- .sp
- .RS 4
- .nf
- (read foo)
- nohup read ...
- find . -exec read ... \e;
- .fi
- .P
- .RE
- .P
- it does not affect the shell variables in the environment of the
- caller.
- .P
- Although the standard input is required to be a text file, and
- therefore will always end with a
- <newline>
- (unless it is an empty file), the processing of continuation lines
- when the
- .BR \-r
- option is not used can result in the input not ending with a
- <newline>.
- This occurs if the last line of the input file ends with a
- <backslash>
- <newline>.
- It is for this reason that ``if any'' is used in ``The terminating
- <newline>
- (if any) shall be removed from the input'' in the description.
- It is not a relaxation of the requirement for standard input to
- be a text file.
- .SH "FUTURE DIRECTIONS"
- None.
- .SH "SEE ALSO"
- .IR "Chapter 2" ", " "Shell Command Language"
- .P
- The Base Definitions volume of POSIX.1\(hy2017,
- .IR "Chapter 8" ", " "Environment Variables",
- .IR "Section 12.2" ", " "Utility Syntax Guidelines"
- .\"
- .SH COPYRIGHT
- Portions of this text are reprinted and reproduced in electronic form
- from IEEE Std 1003.1-2017, Standard for Information Technology
- -- Portable Operating System Interface (POSIX), The Open Group Base
- Specifications Issue 7, 2018 Edition,
- Copyright (C) 2018 by the Institute of
- Electrical and Electronics Engineers, Inc and The Open Group.
- In the event of any discrepancy between this version and the original IEEE and
- The Open Group Standard, the original IEEE and The Open Group Standard
- is the referee document. The original Standard can be obtained online at
- http://www.opengroup.org/unix/online.html .
- .PP
- Any typographical or formatting errors that appear
- in this page are most likely
- to have been introduced during the conversion of the source files to
- man page format. To report such errors, see
- https://www.kernel.org/doc/man-pages/reporting_bugs.html .