Prev (Wildcards) | Next (Loops) |
$ echo Hello World Hello World $ echo "Hello World" Hello WorldSo how do we display:
Hello "World"
?
$ echo "Hello \"World\""The first and last " characters wrap the whole lot into one parameter passed to
echo
so that the spacing between the two words is
kept as is. But the code:
$ echo "Hello "World""would be interpreted as three parameters:
Hello WorldNote that we lose the quotes entirely. This is because the first and second quotes mark off the Hello and following spaces; the second argument is an unquoted "World" and the third argument is the empty string; "".
Most characters (*
, '
, etc) are not interpreted (ie, they are
taken literally) by means of placing them in double quotes ("). They are taken
as is and passed on the the command being called. An example using the asterisk (*) goes:
$ echo * case.html escape.html first.html functions.html hints.html index.html ip-primer.txt raid1+0.txt $ echo *txt ip-primer.txt raid1+0.txt $ echo "*" * $ echo "*txt" *txtIn the first example, * is expanded to mean all files in the current directory.
txt
.txt
to the string.
However, ", $, `, and \
are still interpreted by
the shell, even when they're in double quotes.
The backslash (\) character is used to mark these special characters so that
they are not interpreted by the shell, but passed on to the command being run
(for example, echo
).
So to output the string: (Assuming that the value of $MY_VAR
is 5):
A quote is ", backslash is \, backtick is `. A few spaces are and dollar is $. $MY_VAR is 5.we would have to write:
$ echo "A quote is \", backslash is \\, backtick is \`." A quote is ", backslash is \, backtick is `. $ echo "A few spaces are and dollar is \$. \$MY_VAR is ${MY_VAR}." A few spaces are and dollar is $. $MY_VAR is 5.
We have seen why the " is special for preserving spacing. Dollar is
special because it marks a variable, so $MY_VAR
is
replaced by the shell with the contents of the variable MY_VAR
.
Backslash is special because it is itself used to mark other characters
off; we need the following options for a complete shell:
$ echo "This is \\ a backslash" This is \ a backslash $ echo "This is \" a quote and this is \\ a backslash" This is " a quote and this is \ a backslashSo backslash itself must be escaped to show that it is to be taken literally. The other special character, the backtick, is discussed later in External Programs.
Prev (Wildcards) | Next (Loops) |