One of the most important things you can do with your script is prompt a user for input, then capture that user input for your use.
Using the read command to capture user input
Frequently you will need to ask a user for some kind of input. Within a running script, for instance, you may ask for information:
echo "Please enter name of the file to copy."
The user is expected to type in that file name, then press the Enter key. Their input is available to you as long as you capture it immediately:
read filename
Now you can, for instance, echo it back:
echo $filename
Or you can do something with that information:
cp /bin/$filename ~/
It’s important to be clear what filename holds: the name of the file, not the actual file.
echo -n "Enter the name of an animal: "
Note the use of the -n option to prevent a new line after the echo command.
Exercise
Create a script named greeting.sh .
Prompt the user for their name, then greet them.
Run the script using your name.
Now run the script using a pseudo-name with a space in it. What happens?
Introduction to Debugging
During development, you can watch what your script is doing line-by-line by using this syntax:
bash -v scriptname.sh
or
bash -x scriptname.sh
Try them both and note the differences.
Now is the time to test values with spaces in them to make sure your script handles them properly!