--- a/sh.exp.c
+++ b/sh.exp.c
@@ -579,6 +579,19 @@ exp6(Char ***vp, int ignore)
 	etraci("exp6 {} status", getstatus(), vp);
 	return putn(getstatus() == 0);
     }
+    for (cp = **vp; *cp; cp++)
+	if (cmap(*cp, _DOL | QUOTES)) {
+	    Char *buf;
+
+	    if (ignore & TEXP_IGNORE) {
+		(*vp)++;
+		return Strsave(STRNULL);
+	    }
+	    cleanup_push(cp = Dfix1(*(*vp)++), xfree);
+	    buf = globone(cp, G_ERROR);
+	    cleanup_until(cp);
+	    return buf;
+	}
     if (isa(**vp, ANYOP))
 	return (Strsave(STRNULL));
     cp = *(*vp)++;
