1.5 KiB
categories | tags | ||
---|---|---|---|
|
|
read
The primary use of read
is to capture user input from stdin
. It can also be used to parse strings or files that are redirected to it (with <
and <<
) or piped to it. In each case, what is read is stored as a variable.
read
will parse line by line using a space (\n
) as the default delimiter. You can use IFS to parse by other characters and/or split the contents into an array.
Example of capturing user input
$ read var1 var2
$ thomas bishop # user inputs this
$ echo $var2
$ bishop
If you don't specify variables,
read
will automatically parse using whitespace
Example of piping to read
Here we use find to collate the files in the current directory and then pipe them to read.
find -type -f -not -path "./.git/" | read $fname
Example of parsing a file
We will typically read from a source and then do something with each variable that read
returns, e.g:
while read line; do
if [ var == 'something' ]; then
# do something
done < './input-file.txt
$REPLY
If you do not assign a variable name to store the value that read
reads a default ($REPLY
) is applied. You can reference this value in your code.
For example the following loop does something if $REPLY
is equal to an empty string:
while read;
do
((count++))
if [[ -z "$REPLY" ]]; then
echo "$count"
fi
done < "$input