read from stdin
Here you can see 2 diffrent ways of displaying the prompt.
- use echo -n to display NO line-break at the ent of the echo-ed line
and then using read to fill the vairable USERNAME - use -p option of read to display the prompt and
note the -s option (silent) because reading a password its a good idea NOT
to echo (display) characters read from the commandline
...
echo -n "Enter you name: ";
read USERNAME;
if [ ! -z "$USERNAME" ]; then
echo "Hello $USERNAME";
else
echo "Please enter a valid username!" 1>&2
exit 1;
fi
read -p "Enter your password now: " -s PASSWORD
...
read from file
to read a file line-by-line (using ‘\n’ as seperator)
this example reads a file given as ARGV[1] to your script.
e.g. /path/to/yourscript /path/to/file
exec < $1
while read line; do
# do whatever you want here, e.g.:
echo $line
done
read man page
read [-ers] [-u fd] [-t timeout] [-a aname] [-p prompt] [-n nchars] [-d delim] [name ...]
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 interven-
ing separators assigned to the last name. If there are fewer
words read from the input stream than names, the remaining names
are assigned empty values. The characters in IFS are used to
split the line into words. The backslash character (\) may be
used to remove any special meaning for the next character read
and for line continuation. Options, if supplied, have the fol-
lowing meanings:
-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.
-e If the standard input is coming from a terminal, readline
(see READLINE above) is used to obtain the line.
-n nchars
read returns after reading nchars characters rather than
waiting for a complete line of input.
-p prompt
Display prompt on standard error, without a trailing new-
line, before attempting to read any input. The prompt is
displayed only if input is coming from a terminal.
-r Backslash does not act as an escape character. The back-
slash is considered to be part of the line. In particu-
lar, a backslash-newline pair may not be used as a line
continuation.
-s Silent mode. If input is coming from a terminal, charac-
ters 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.
If no names are supplied, the line read is assigned to the vari-
able REPLY. 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.