Changes

Jump to navigation Jump to search
108 bytes added ,  22:50, 29 March 2016
m
Text replacement - "</source>" to "</syntaxhighlight>"
<syntaxhighlight lang="bash" >echo "$PATH"
echo "$PS1"
echo /etc/*.conf</sourcesyntaxhighlight>
However, sometime you do not wish to use variables or [[wildcards]]. For example, do not print value of $PATH, but just print $PATH on screen as a word. You can enable or disable the meaning of a special character by enclosing them in single quotes. This is also useful to suppress warnings and error messages while writing the shell scripts.
<syntaxhighlight lang="bash" >echo "Path is $PATH" ## $PATH will be expanded</sourcesyntaxhighlight>
OR
<syntaxhighlight lang="bash" >echo 'I want to print $PATH' ## PATH will not be expanded</sourcesyntaxhighlight>
==Quoting==
There are three types of quotes:
The backslash ( \ ) alters the special meaning of the ' and " i.e. it will escape or cancel the special meaning of the next character. The following will display filename in double quote:
<syntaxhighlight lang="bash" >FILE="/etc/resolv.conf"
echo "File is \"$FILE\" "</sourcesyntaxhighlight>
Sample Outputs:
<pre>File is "/etc/resolv.conf"</pre>
The following will remove the special meaning of the dollar ( $ ) sign:
<syntaxhighlight lang="bash" >FILE="/etc/resolv.conf"
echo "File is \$FILE "</sourcesyntaxhighlight>
Sample Outputs:
<pre>File is $FILE </pre>
echo -e "Sr.no\t DVD (price) "
echo -e "1\t Spirited Away (INR.200)"
echo -e "2\t Dragon Ball Z (INR.300)"</sourcesyntaxhighlight>
The special parameters * and @ have special meaning when in double quotes, but you can disable them with the backslash:
<syntaxhighlight lang="bash" >echo "*"
echo "\*"
echo "\@"</sourcesyntaxhighlight>
====Continue command on next line====
You can use the backslash (\) as last character on line to continue command on next line:
<syntaxhighlight lang="bash" >echo "A monkey-tailed boy named Goku is found by an old martial \
>arts expert who raises him as his grandson. One day Goku meets a \
>girl named Bulma and together they go on a quest to retrieve the seven Dragon Balls"</sourcesyntaxhighlight>
You can also use the backslash while writing program or [[Writing_your_first_shell_function|function]]:
<syntaxhighlight lang="bash" ># Purpose: clean /tmp/$domain ?
-a -e /usr/local/etc/nixcraft/lighttpd/disk_cache.init ] && return 0
return 1
}</sourcesyntaxhighlight>
====Protecting command line arguments====
Type the following command to find out all c program file (*.c):
<syntaxhighlight lang="bash" >find $HOME -name *.c</sourcesyntaxhighlight>
In the above example, the *.c is expanded by the bash shell. It will try to match all filename ending with .c in the /home directory (current user's home directory) such as main.c, lib1.c, lib2.c, ssh.c, auth.c etc. You can escape the wild card using the backslash as the escape character:
<syntaxhighlight lang="bash" >find $HOME -name \*.c
find $HOME -name \*main.c
find /nas01/apps/admin -iname \*py </sourcesyntaxhighlight>
You can also use the double quote
<syntaxhighlight lang="bash" >find $HOME -name "*.c"</sourcesyntaxhighlight>
[[Category:Variables and Quoting]]

Navigation menu