The Shell Scripting Tutorial


Echo : -n vs \c

As you may have noticed by now, when you use the echo statement, a newline is added at the end of the command. There is a fix for this ... well, more accurately, there are two fixes for this.

Some Unix systems use echo -n message to tell echo not to append a newline; others use echo message \c to do the same thing:
echo -n "Enter your name: "
read name
echo "Hello, $name"
This will work on some systems, and will look like this:
Enter your name: Steve
Hello, Steve
However, on other systems, you need to write the code like this:
echo "Enter your name: \c"
read name
echo "Hello, $name"
Which will provide the same results for those systems.

Well, that's a pain. Here's a workaround which will work on both:

if [ "`echo -n`" = "-n" ]; then
  n=""
  c="\c"
else
  n="-n"
  c=""
fi

echo $n Enter your name: $c
read name
echo "Hello, $name"

If echo -n wasn't interpreted properly, it would just echo out the text -n, in which case, $n is set to the empty string, and $c is set to \c. Otherwise, the opposite is done, so $n is set to -n, and $c is set to the empty string.


My Paperbacks and eBooks

My Shell Scripting books, available in Paperback and eBook formats. This tutorial is more of a general introduction to Shell Scripting, the longer Shell Scripting: Expert Recipes for Linux, Bash and more book covers every aspect of Bash in detail.

Shell Scripting Tutorial

Shell Scripting Tutorial
is this tutorial, in 88-page Paperback and eBook formats. Convenient to read on the go, and in paperback format good to keep by your desk as an ever-present companion.

Also available in PDF form from Gumroad:Get this tutorial as a PDF
Shell Scripting: Expert Recipes for Linux, Bash and more

Shell Scripting: Expert Recipes for Linux, Bash and more
is my 564-page book on Shell Scripting. The first half covers all of the features of the shell in every detail; the second half has real-world shell scripts, organised by topic, along with detailed discussion of each script.