Changes

Jump to navigation Jump to search
384 bytes added ,  22:50, 29 March 2016
m
Text replacement - "</source>" to "</syntaxhighlight>"
|next=Export Variables|The export statement}}
Your bash shell understand understands special characters with special meanings. For example, $var is used to display expand the variable value. Bash expands variables and [[wildcards]], for example:<source 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 into a in single or double quotes. This is also useful to suppress warnings and error messages while writing the shell scripts. <source syntaxhighlight lang="bash">echo "Path is $PATH" ## $PATH will be expanded</sourcesyntaxhighlight>
OR
<source syntaxhighlight lang="bash">echo 'I want to print $PATH'## PATH will not be expanded</sourcesyntaxhighlight>
==Quoting==
There are three types of quotes:
|\
|The Backslash
|Use backslahs backslash to change the special meaning of the characters or to escape special characters within the text such as quotation marks.|You can use \ before dollar sign is used to told tell the shell to have no special meaning. Disable the meaning of the next character in $PATH (i.e. do not display value of $PATH variable):<br/><code>echo "Path is \$PATH"<br />echo "Path is $PATH"<br />&nbsp;
|-
|}
==The Backslash==
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:
<source 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:
<source syntaxhighlight lang="bash">FILE="/etc/resolv.conf"echo "File is \$FILE "</sourcesyntaxhighlight>
Sample Outputs:
<pre>File is $FILE </pre>
\cx a control-x character
</pre>
Use -e option of echo command to enable interpretation of backslash escapes.
 
===Examples===
<source syntaxhighlight lang="bash">echo "Pizza bill \$22.5"
echo -e "\a Ding dong\a"
echo "CIFS path must be \\\\NT-Server-Name\\ShareName"
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:
<source 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:
<source 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]]:
<source syntaxhighlight lang="bash"># Purpose: clean /tmp/$domain ?
check_temp_clean() {
[ "$SERVER_MODE" = "daemon" ] || return 1
-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):
<source 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:<source 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
<source syntaxhighlight lang="bash">find $HOME -name "*.c"</sourcesyntaxhighlight>
[[Category:Variables and Quoting]]

Navigation menu