Difference between revisions of "Quoting"
Line 20: | Line 20: | ||
|- | |- | ||
|" | |" | ||
− | | | + | |The double quote |
|The double quote ( "quote" ) protects everything enclosed between two double quote marks except $, ', " and \.Use the double quotes when you want only '''variables and command substitution'''.<br/>* '''Variable''' - Yes<br/>* '''Wildcards''' - No<br/>* '''Command substitution''' - yes | |The double quote ( "quote" ) protects everything enclosed between two double quote marks except $, ', " and \.Use the double quotes when you want only '''variables and command substitution'''.<br/>* '''Variable''' - Yes<br/>* '''Wildcards''' - No<br/>* '''Command substitution''' - yes | ||
|The double quotes allowes to print the value of $SHELL variable, disables the meaning of [[wildcards]], and finally allows command substitution.<br/><code>echo "$SHELL"<br/>echo "/etc/*.conf"<br />echo "Today is $(date)"</code><br /> | |The double quotes allowes to print the value of $SHELL variable, disables the meaning of [[wildcards]], and finally allows command substitution.<br/><code>echo "$SHELL"<br/>echo "/etc/*.conf"<br />echo "Today is $(date)"</code><br /> | ||
|- | |- | ||
|' | |' | ||
− | | | + | |The single quote |
|The single quote ( 'quote' ) protects everything enclosed between two single quote marks. It is used to '''turn off the special meaning''' of all characters.<br/>* '''Variable''' - No<br/>* '''Wildcards''' - No<br/>* '''Command substitution''' - No | |The single quote ( 'quote' ) protects everything enclosed between two single quote marks. It is used to '''turn off the special meaning''' of all characters.<br/>* '''Variable''' - No<br/>* '''Wildcards''' - No<br/>* '''Command substitution''' - No | ||
| The single quotes prevents displaying variable $SHELL value, disabled the meaning of [[wildcards]] /etc/*.conf, and finally command substitution ($date) itself. <br/><code>echo '$SHELL'<br/>echo '/etc/*.conf'<br />echo 'Today is $(date)'</code><br /> | | The single quotes prevents displaying variable $SHELL value, disabled the meaning of [[wildcards]] /etc/*.conf, and finally command substitution ($date) itself. <br/><code>echo '$SHELL'<br/>echo '/etc/*.conf'<br />echo 'Today is $(date)'</code><br /> | ||
|- | |- | ||
|\ | |\ | ||
− | | | + | |The Backslash |
|Use backslahs to change the special meaning of the characters or to escape special characters within the text such as quotation marks. | |Use backslahs 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 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 /> | |You can use \ before dollar sign is used to told 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 /> |
Revision as of 16:29, 19 October 2009
← Echo Command • Home • Export Variables →
Your bash shell understand special characters with special meanings. For example, $var is used to display the variable value. Bash expands variables and wildcards, for example:
echo $PATH
echo $PS1
echo /etc/*.conf
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 single or double quotes. This is also useful to suppress warnings and error messages while writing the shell scripts.
echo "Path is $PATH"
OR
echo 'I want to print $PATH'
Quoting
There are three types of quotes
Quote type | Name | Meaning | Example (type at shell prompt) |
---|---|---|---|
" | The double quote | The double quote ( "quote" ) protects everything enclosed between two double quote marks except $, ', " and \.Use the double quotes when you want only variables and command substitution. * Variable - Yes * Wildcards - No * Command substitution - yes |
The double quotes allowes to print the value of $SHELL variable, disables the meaning of wildcards, and finally allows command substitution.echo "$SHELL" |
' | The single quote | The single quote ( 'quote' ) protects everything enclosed between two single quote marks. It is used to turn off the special meaning of all characters. * Variable - No * Wildcards - No * Command substitution - No |
The single quotes prevents displaying variable $SHELL value, disabled the meaning of wildcards /etc/*.conf, and finally command substitution ($date) itself. echo '$SHELL' |
\ | The Backslash | Use backslahs 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 to have no special meaning. Disable the meaning of the next character in $PATH (i.e. do not display value of $PATH variable):echo "Path is \$PATH" |
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:
FILE="/etc/resolv.conf"
echo "File is \"$FILE\" "
Sample Outputs:
File is "/etc/resolv.conf"
The following will remove the special meaning of the dollar ( $ ) sign:
FILE="/etc/resolv.conf"
echo "File is \$FILE "
Sample Outputs:
File is $FILE