Saturday, 17 February 2018

shell - Difference between single and double quotes in Bash



In Bash, what are the differences between single quotes ('') and double quotes ("")?


Answer



Single quotes won't interpolate anything, but double quotes will. For example: variables, backticks, certain \ escapes, etc.



Example:



$ echo "$(echo "upg")"

upg
$ echo '$(echo "upg")'
$(echo "upg")


The Bash manual has this to say:




3.1.2.2 Single Quotes




Enclosing characters in single quotes (') preserves the literal value of each character within the quotes. A single quote may not occur between single quotes, even when preceded by a backslash.



3.1.2.3 Double Quotes



Enclosing characters in double quotes (") preserves the literal value of all characters within the quotes, with the exception of $, `, \, and, when history expansion is enabled, !. The characters $ and ` retain their special meaning within double quotes (see Shell Expansions). The backslash retains its special meaning only when followed by one of the following characters: $, `, ", \, or newline. Within double quotes, backslashes that are followed by one of these characters are removed. Backslashes preceding characters without a special meaning are left unmodified. A double quote may be quoted within double quotes by preceding it with a backslash. If enabled, history expansion will be performed unless an ! appearing in double quotes is escaped using a backslash. The backslash preceding the ! is not removed.



The special parameters * and @ have special meaning when in double quotes (see Shell Parameter Expansion).



No comments:

Post a Comment

casting - Why wasn't Tobey Maguire in The Amazing Spider-Man? - Movies & TV

In the Spider-Man franchise, Tobey Maguire is an outstanding performer as a Spider-Man and also reprised his role in the sequels Spider-Man...