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.
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 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 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 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. |