Bash Shell scripting – Read User Input

Bash scripting Tutorial - Read User Input


Read command  – The read command allows you to prompt for input and store it in a variable. Read a line from the standard input and split it into fields.
Read command reads a single line from the standard input, or from file descriptor FD if the -u option is supplied. The line is split into fields as with word splitting, and the first word is assigned to the first NAME, the second word to the second NAME, and so on, with any leftover words assigned to the last NAME. Only the characters found in $IFS are recognized as word delimiters.
shell allows to prompt for user input.
read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]

  • words entered by user are assigned to varname and “more vars”
  • last variable gets rest of input line



#! /bin/bash

echo "Enter name : "
read name
echo "Enterd name : $name"

# Multiple inputs
echo "Enter names : "
read name1 name2 name3
echo "Names : $name1 , $name2, $name3"

# Two commonly used options however are 
# -p which allows you to specify a prompt
# -s which makes the input silent.
read -p 'username : ' user_var
read -sp 'password : ' pass_var
echo "username : $user_var"
echo "password : $pass_var"

# -a makes read command to read into an array
echo "Enter name : "
read -a names
echo "Names : ${names[0]}, ${names[1]}"

# read command will now store the reply into the default build-in variable $REPLY
echo "Enter name : "
echo "Name : $REPLY"

Output of the above script:

test@test$ ./ 
Enter name : 
Enterd name : Mark
Enter names : 
Mark Tom John
Names : Mark , Tom, John
username : my_user
password : 
username : my_user
password : 12345
Enter name : 
Mark Tom 
Names : Mark, Tom
Enter name : 



 -a array assign the words read to sequential indices of the array
variable ARRAY, starting at zero
-d delim continue until the first character of DELIM is read, rather
than newline
-e use Readline to obtain the line in an interactive shell
-i text  Use TEXT as the initial text for Readline
-n nchars return after reading NCHARS characters rather than waiting
for a newline, but honor a delimiter if fewer than NCHARS
characters are read before the delimiter
 -N nchars return only after reading exactly NCHARS characters, unless
EOF is encountered or read times out, ignoring any delimiter
-p prompt output the string PROMPT without a trailing newline before
attempting to read
-r do not allow backslashes to escape any characters
-s do not echo input coming from a terminal
-u fd read from file descriptor FD instead of the standard input
-t timeout time out and return failure if a complete line of input is
not read withint TIMEOUT seconds. The value of the TMOUT
variable is the default timeout. TIMEOUT may be a
fractional number. If TIMEOUT is 0, read returns success only
if input is available on the specified file descriptor. The
exit status is greater than 128 if the timeout is exceeded

Partner Sites

Be the first to comment

Leave a Reply

Your email address will not be published.