diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+0.3.0.0
+=======
+
+  * Added another way to avoid variable expansion (`\\#{foo}` is replaced with `#{foo}`)
+
 0.2.2.0
 =======
 
diff --git a/command-qq.cabal b/command-qq.cabal
--- a/command-qq.cabal
+++ b/command-qq.cabal
@@ -1,5 +1,5 @@
 name:                command-qq
-version:             0.2.2.0
+version:             0.3.0.0
 synopsis:            Quasiquoters for external commands
 description:
   Features:
@@ -48,7 +48,7 @@
 source-repository this
   type:              git
   location:          https://github.com/biegunka/command-qq
-  tag:               0.2.2.0
+  tag:               0.3.0.0
 
 library
   default-language:  Haskell2010
diff --git a/src/System/Command/QQ.hs b/src/System/Command/QQ.hs
--- a/src/System/Command/QQ.hs
+++ b/src/System/Command/QQ.hs
@@ -135,22 +135,25 @@
 substituteVars :: String -> Q Exp
 substituteVars = raw where
   raw, var :: String -> Q Exp
-  raw (break (== '#') -> parts) = case parts of
-    (before, '#':'{' :after) -> [e| before ++ $(var after) |]
-    (before, '#':'\\':after) -> [e| before ++ '#' : $(raw after) |]
-    (before, '#':after)      -> [e| before ++ '#' : $(raw after) |]
-    (before, [])             -> [e| before |]
-    _                        -> fail "Should never happen"
+  raw str = case break (== '\\') str of
+    (before, '\\' : '\\' : after) -> [e| before ++ '\\' : $(raw after) |]
+    (before, '\\' : '#' : '{' : after) -> [e| before ++ '#' : '{' : $(raw after) |]
+    (_, _) -> case break (== '#') str of
+      (before, '#' : '{' : after)  -> [e| before ++ $(var after) |]
+      (before, '#' : '\\' : after) -> [e| before ++ '#' : $(raw after) |]
+      (before, '#' : after)        -> [e| before ++ '#' : $(raw after) |]
+      (before, [])                 -> [e| before |]
+      _                            -> fail "Should never happen"
 
   var (break (== '}') -> parts) = case parts of
-     (b:efore, '}':after)
-        | isLower b                    -> external (VarE (mkName (b:efore))) after
-        | isUpper b                    -> external (ConE (mkName (b:efore))) after
+     (b : efore, '}' : after)
+        | isLower b                     -> external (VarE (mkName (b:efore))) after
+        | isUpper b                     -> external (ConE (mkName (b:efore))) after
         | Just i <- readMaybe (b:efore) -> external (LitE (IntegerL i)) after
         | Just d <- readMaybe (b:efore) -> external (LitE (RationalL (toRational (d :: Double)))) after
         | Just c <- readMaybe (b:efore) -> external (LitE (CharL c)) after
         | Just s <- readMaybe (b:efore) -> external (LitE (StringL s)) after
-     (before, _)                       -> fail $ "Invalid name: " ++ before
+     (before, _)                        -> fail $ "Invalid name: " ++ before
 
   external :: Exp -> String -> Q Exp
   external e after = [e| embed $(return e) ++ $(raw after) |]
diff --git a/src/System/Command/QQ/Predef.hs b/src/System/Command/QQ/Predef.hs
--- a/src/System/Command/QQ/Predef.hs
+++ b/src/System/Command/QQ/Predef.hs
@@ -17,12 +17,9 @@
 awk :: QuasiQuoter
 awk = quoter $ callCommand "awk" []
 
-
 -- | @ghci@ interpreter
 ghci :: QuasiQuoter
-ghci =
-  quoter $ callCommand "ghc" ["-ignore-dot-ghci", "-e"]
-
+ghci = quoter $ callCommand "ghc" ["-ignore-dot-ghci", "-e"]
 
 -- | @perl@ interpreter
 perl :: QuasiQuoter
@@ -31,7 +28,6 @@
 -- | @ruby@ interpreter
 ruby :: QuasiQuoter
 ruby = interpreter "ruby"
-
 
 -- | @python@ interpreter
 python :: QuasiQuoter
