Read one line from the standard input, (or from a file) and assign the word(s) to variable name(s).

      read [-ers] [-a aname] [-p prompt] [-t timeout]
              [-n nchars] [-d delim] [-u fd] [name ...]

   -a aname
        The words are assigned to sequential indices of the array variable aname, starting at 0.
      aname is unset before any new values are assigned.  Other name arguments are ignored.
   -d delim
      The first character of delim is used to terminate the input line, rather than newline.

      If the standard input is coming from a terminal, readline is used to obtain the line.

   -n nchars
      read returns after reading nchars characters rather than waiting for a complete line of
   -p prompt
      Display prompt on standard error, without a trailing newline, before attempting to read
      any input. The prompt is displayed only if input is coming from a terminal.

      Do not treat a Backslash as an escape character.  The backslash is considered to be part
      of the line. In particular, a backslash-newline pair can not be used as a line continuation.
      Without this option, any backslashes in the input will be discarded.
      You should almost always use the -r option with read.
      Silent mode. If input is coming from a terminal, characters are not echoed.

   -t timeout
      Cause read to time out and return failure if a complete line of input is not read
      within timeout seconds. This option has no effect if read is not reading input from
      the terminal or a pipe.

   -u fd
      Read input from file descriptor fd.

      The name(s) to assign to each word.
      If no names are supplied, the line read is assigned to the variable $REPLY.

One line is read from the standard input, or from the file descriptor fd supplied as an argument to the -u option, and the first word is assigned to the first name, the second word to the second name, and so on, with leftover words and their intervening separators assigned to the last name.

The read command modifies each line read; by default it removes all leading and trailing whitespace characters (spaces and tabs, or any whitespace characters present in IFS). If that is not desired, the IFS variable can be cleared with IFS=

If there are fewer words read from the standard input than names, the remaining names are assigned empty values.
The characters in the value of the IFS variable are used to split the line into words.

The backslash character '\' can be used to remove any special meaning for the next character read, and for line continuation.

The return code is zero, unless end-of-file is encountered, read times out, or an invalid file descriptor is supplied as the argument to -u.

This is a BASH shell builtin, to display your local syntax from the bash prompt type: help [r]ead


Prompt for and then echo some values:

$ read MYVAR
$ echo You entered $MYVAR

$ read
$ echo You entered $REPLY

$ echo "First Second Third Fourth " | while read -r -d ' ' ret1; do printf "=$ret1="; done =First==Second==Third==Fourth=

$ echo "First Second Third Fourth " | while read -r -d ' ' ret1; do printf "=$ret1= \n"; done

“Let us read and let us dance - two amusements that will never do any harm to the world” ~ Voltaire

Related macOS commands

expr - Evaluate expressions.

Copyright © 1999-2024
Some rights reserved