Serious Shell Programming
  • Introduction
  • Acknowledgements
  • Basics
    • Strings
      • Single-Quotes
      • Double-Quotes
      • Unquoted Strings
      • Compound Strings
    • Here Documents
      • Here Doc
      • Indented Here Doc
      • Literal Here Doc
      • In-Memory Here Doc
    • Conditionals
      • Built-in test
      • Parameter Conditionals
      • Parameter test
    • Regex
      • grep
      • awk
      • pcre
    • Control Flow
      • Binary Operators
      • if-elif-else
      • case Statement
      • for Loop
      • while Loop
      • Functions
  • shellcheck
    • Introduction
    • Bad Advice
  • Style
    • awk
    • case
    • Redirection
    • Comments
    • trap
  • String Functions
    • substr
    • sprintf
    • replace
    • replaceall
    • replacestart
    • replaceend
    • fnmatch
  • awk
    • Pre-declaring Arrays
    • Sorting Arrays
  • Know Your limits
    • Arguments
    • Environment Variables
    • Solutions
Powered by GitBook
On this page

Was this helpful?

  1. Basics
  2. Strings

Unquoted Strings

In the argument-space of a command, when shell encounters a character that is:

  • Not a quote or back-tick (" or ' or ` )

  • Not a parentheseis, bracket, or brace ((/), [/], or {/})

  • Not an Internal Field Separator found in the $IFS built-in variable

shell starts creating a string using these rules:

  1. A quote starts a compound string (e.g., c"'est magnifique")

  2. Escape sequences may be expanded (e.g., \" is translated to ")

  3. Variables are expanded (e.g., $foo becomes contents of foo variable)

  4. Command substitutions are performed (e.g., $(date) and `date` become the output of date command)

  5. A tilde (~) followed by nothing or a forward-slash (/) becomes the path to the current user's home directory

PreviousDouble-QuotesNextCompound Strings

Last updated 5 years ago

Was this helpful?