We have seen how we can use the built-in read to populate a variable. So far, we have used echo to produce the prompt, but this can be passed to read itself using the -p option. The read command will surpass the additional linefeed, so we reduce both the line count and the complexity to some degree.
We can test this at the command line itself. Try typing the following command to see read in action:
$ read -p "Enter your name: " name
We use the read command with the -p option. The argument that follows the option is the text that appears in the prompt. Normally, we would make sure that there is a trailing space at the end of the text to ensure that we can clearly see what we type. The last argument supplied here is the variable we want to populate; we simply call it name. Variables are case-sensitive too. Even if we do not supply the last argument, we can still store the user's response, but this time in the REPLY variable.
The read command with syntax using the -p option is shown as follows:
read -p <prompt> <variable name>
We can edit the script so that it appears similar to the following extract from hello3.sh:
#!/bin/bash
read -p "May I ask your name: " name
echo "Hello $name"
exit 0
The read prompt cannot evaluate commands within the message string, such as those we used before.