Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I don't understand how Bash evaluates escaping of apostrophe characters in single quoted strings.

$ echo ''\''Hello World'\'''
'Hello World' #works

$ echo '\'Hello World\''
 > # expects you to continue input

I've tried looking for explanations to this but couldn't get anything. What is Bash doing here?

share|improve this question

3 Answers 3

up vote 16 down vote accepted

In single quotes, no escaping is possible. There is no way how to include a single quote into single quotes. See Quoting in man bash.

share|improve this answer

In addition to POSIX-supported single- and double-quoting, bash supplies an additional type of quoting to allow a small class of escaped characters (including a single quote) in a quoted string:

$ echo $'\'Hello World\''
'Hello World'

See the QUOTING section in the bash man page, near the end of the section. (Search for "ANSI C".)

share|improve this answer

To explain what is happening with your escaped apostrophes, we'll examine your second example (also see single quotes, or strong quotes):

$ echo '\'Hello World\''
>     # expects you to continue input

Here, you've left the quotation hanging, as you've stated. Now trim the end and change it to:

                     v                                v           v
$ echo '\'Hello World     # Echo two strings: '\' and 'Hello World'.
\Hello World         ^

The "Hello World" sub-string wasn't quoted here, but it behaved as if it was strong quoted. Using your example again, trim the end differently this time:

                     vv                                    v (plain apostrophe)
$ echo '\'Hello World\'   # Will echo: '\' and 'Hello World''
\Hello World'        ^^   # Note that the trailing ' char is backslash escaped. 

The "Hello World" sub-string again behaves as if it were strong quoted, with only the added apostrophe (escaped, so no longer a single quote) at the end.

When another single quote is added to the end (your original example) the string is left hanging and waiting for a close-quote.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.
{"cc_re__cc_re__cc_by_sa_3_0": ["                  <li><a href=\"//area51.stackexchange.com\" title=\"proposing new sites in the Stack Exchange network\">Area 51</a></li>\r\n                        <li><a href=\"//careers.stackoverflow.com\">Stack Overflow Careers</a></li>\r\n                    \r\n                </ol>\r\n            </td>\r\n    </tr>\r\n</table>\r\n                </div>\r\n            </div>\r\n\r\n            <div id=\"copyright\">\r\n                site design / logo &#169; 2015 stack exchange inc; user contributions licensed under <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\" rel=\"license\">cc by-sa 3.0</a>                   with <a href=\"http://blog.stackoverflow.com/2009/06/attribution-required/\" rel=\"license\">attribution required</a>\r\n            </div>\r\n            <div id=\"svnrev\">\r\n                rev 2015.1.25.2220\r\n            </div>\r\n            \r\n        </div>\r\n    </div>\r\n    <noscript>\r\n        <div id=\"noscript-warning\">Super User works best with JavaScript enabled<img src=\"http://pixel.quantserve.com/pixel/p-c1rF4kxgLUzNc.gif\" alt=\"\" class=\"dno\"></div>\r\n    </noscrip"], "copyright__copyright__copyright": ["\"Hello World\" sub-string again behaves as if it were strong quoted, with only the added apostrophe (escaped, so no longer a single quote) at the end.\n\nWhen another single quote is added to the end (your original example) the string is left hanging and waiting for a close-quote.\n\nshare|improve this answer\n\nYour Answer\n\n\u00a0\ndiscard\n\nBy posting your answer, you agree to the privacy policy and terms of service.\n\nNot the answer you're looking for? Browse other questions tagged or ask your own question."]}