DEV Community

Will Sheppard
Will Sheppard

Posted on

Escape quotes correctly when using psql via docker in bash

docker compose exec site bash -c 'PGPASSWORD=***** psql -Ufoo -d bar \
  -h example.com -x -c "select qux, date(xyzzy) from tabley \
  where field in(1, 2, 3) and that_time > '"'"'2024-11-18'"'"' \
  order by that_time;"'
Enter fullscreen mode Exit fullscreen mode

Explanation:

'"'"' is the Quoteception operator. When used in the middle of a single quoted string, it:

  • ' Ends the single quoted string
  • " Starts a new double quoted string
  • ' Containing only one single quote
  • " Ends the double quoted string
  • ' Starts the next single quoted string

Or described another way:

echo 'Embedded single quote is here: '"'"' did you see it?'

echo 'Embedded single quote is here: ' \
"'"                                    \
' did you see it?'
Enter fullscreen mode Exit fullscreen mode

Outputs:

Embedded single quote is here:  '  did you see it?
Enter fullscreen mode Exit fullscreen mode

Top comments (0)