Using echo with options

So far, in this book we have been able to see that the echo command is very useful and is going to be in many of our scripts, if not all. We have also seen that this is both a built-in command as well as a command file. When running the echo command, the built-in command will be used unless we state the full path to the file. We can test this with the following command:

$ test -a echo

To gain help on the built-in command, we can use man bash and search for echo; however, the echo command is identical to the internal command so I will recommend that you use man echo in most cases in order to display command options.

The basic use of echo that we have seen so far will produce a text output and a new line. This is often the desired response so we don't have to be concerned that the next prompt will append to the end of the echoed text. The new line separates the script output from the next shell prompt. If we do not supply any text string to print, echo will print only the new line to STDOUT. We can test this with the following command directly from the command line. We do not need to run echo or in fact any other command from a script. To run echo from the command line will simply enter the command as shown:

$ echo

The output will show a clear new line between the command we issued and the subsequent prompt. We can see this in the following screenshot:

If we want to suppress the new line, especially useful if we are to prompt users, we can do this in the following two ways with the help of echo:

$ echo -n "Which directory do you want to use? "
$ echo -e "Which directory do you want to use? \c"

The result will be to suppress the line feed. In the initial example, the -n option is used to suppress the line feed. The second example uses the more generic -e option, which allows escape sequences to be added to the text string. To continue on the same line, we use \c as the escape sequence.

This does not look great as the final part of the script or when it is run from the command line, as the command prompt will follow. This is illustrated in the following screenshot: