hush: fix handling of \" in quoted/unquoted cmd
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -2,5 +2,5 @@
|
||||
$TEST
|
||||
Q
|
||||
a\bc
|
||||
a"c
|
||||
11-$a-\t-\-\"-`-\--\z-\*-\?-22 33-$a-\t-\-"-`-\--\z-\*-\?-44
|
||||
done:0
|
||||
|
||||
@@ -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:$?
|
||||
|
||||
Reference in New Issue
Block a user