hush: fix handling of \" in quoted/unquoted cmd

Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
This commit is contained in:
Denys Vlasenko
2010-09-12 15:05:39 +02:00
parent 958581a8d9
commit acd5bc8f64
5 changed files with 50 additions and 22 deletions

View File

@@ -5,6 +5,8 @@ a\\
b
123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
123456 `echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-'`
123456 $(echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-')
c\
Unquoted heredoc:
@@ -13,6 +15,8 @@ a\
b
123456 -qwerty-\t-\-\"-\'-`-\--\z-\*-\?-
-qwerty-\t-\-\"-\'-`-\--\z-\*-\?-
123456 v-$a-\t-\-\"-\x-`-\--\z-\*-\?-
123456 v-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-
cEOF2
Quoted -heredoc:
@@ -22,6 +26,8 @@ a\\
b
123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
123456 `echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-'`
123456 $(echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-')
c\
Unquoted -heredoc:
@@ -30,6 +36,8 @@ a\
b
123456 -qwerty-\t-\-\"-\'-`-\--\z-\*-\?-
-qwerty-\t-\-\"-\'-`-\--\z-\*-\?-
123456 v-$a-\t-\-\"-\x-`-\--\z-\*-\?-
123456 v-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-
cEOF4
Done: 0

View File

@@ -11,6 +11,8 @@ a\\
b
123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
123456 `echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-'`
123456 $(echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-')
c\
EOF1
echo
@@ -23,6 +25,8 @@ a\\
b
123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
123456 `echo v'-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-'`
123456 $(echo v'-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-')
c\
EOF2
EOF2
@@ -36,6 +40,8 @@ a\\
b
123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
123456 `echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-'`
123456 $(echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-')
c\
EOF3
# In -heredoc case the marker is detected even if it is indented.
@@ -49,6 +55,8 @@ a\\
b
123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
123456 `echo v'-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-'`
123456 $(echo v'-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-')
c\
EOF4
EOF4

View File

@@ -2,5 +2,5 @@
$TEST
Q
a\bc
a"c
11-$a-\t-\-\"-`-\--\z-\*-\?-22 33-$a-\t-\-"-`-\--\z-\*-\?-44
done:0

View File

@@ -7,6 +7,8 @@ echo `echo '\'TEST\`echo ZZ\`BEST`
echo `echo \\$TEST`
echo `echo \$TEST`
echo a`echo \\\\b`c
# \" etc are NOT special (passed verbatim WITH \)!
echo a`echo \"`c
# \" is not special if in unquoted `cmd` (passed verbatim WITH \),
# but is special in quoted one
echo `echo 11'-$a-\t-\\-\"-\`-\--\z-\*-\?-'22` "`echo 33'-$a-\t-\\-\"-\`-\--\z-\*-\?-'44`"
echo done:$?