Bash doesn't expand its $'...' construct in double quotes: $ echo "$'a\tb'" $'a\tb'
Change BusyBox ash to do the same. This also fixes a problem with here documents where BusyBox ash gave an incorrect result for: $ cat <<EOF > '$' > EOF '$' Reported-by: Timo Teras <[email protected]> Signed-off-by: Ron Yorston <[email protected]> --- shell/ash.c | 2 +- shell/ash_test/ash-heredoc/heredoc4.right | 1 + shell/ash_test/ash-heredoc/heredoc4.tests | 3 +++ shell/ash_test/ash-quoting/dollar_squote_bash1.right | 1 + shell/ash_test/ash-quoting/dollar_squote_bash1.tests | 1 + 5 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 shell/ash_test/ash-heredoc/heredoc4.right create mode 100755 shell/ash_test/ash-heredoc/heredoc4.tests diff --git a/shell/ash.c b/shell/ash.c index 5613e1f..6ac0f15 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -11500,7 +11500,7 @@ parsesub: { || (c != '(' && c != '{' && !is_name(c) && !is_special(c)) ) { #if ENABLE_ASH_BASH_COMPAT - if (c == '\'') + if (syntax != DQSYNTAX && c == '\'') bash_dollar_squote = 1; else #endif diff --git a/shell/ash_test/ash-heredoc/heredoc4.right b/shell/ash_test/ash-heredoc/heredoc4.right new file mode 100644 index 0000000..371b092 --- /dev/null +++ b/shell/ash_test/ash-heredoc/heredoc4.right @@ -0,0 +1 @@ +'$' diff --git a/shell/ash_test/ash-heredoc/heredoc4.tests b/shell/ash_test/ash-heredoc/heredoc4.tests new file mode 100755 index 0000000..642ddb3 --- /dev/null +++ b/shell/ash_test/ash-heredoc/heredoc4.tests @@ -0,0 +1,3 @@ +cat <<EOF +'$' +EOF diff --git a/shell/ash_test/ash-quoting/dollar_squote_bash1.right b/shell/ash_test/ash-quoting/dollar_squote_bash1.right index 57536b1..9f4e25e 100644 --- a/shell/ash_test/ash-quoting/dollar_squote_bash1.right +++ b/shell/ash_test/ash-quoting/dollar_squote_bash1.right @@ -1,4 +1,5 @@ a b +$'a\tb' a b c def diff --git a/shell/ash_test/ash-quoting/dollar_squote_bash1.tests b/shell/ash_test/ash-quoting/dollar_squote_bash1.tests index 93a56ca..6fc411b 100755 --- a/shell/ash_test/ash-quoting/dollar_squote_bash1.tests +++ b/shell/ash_test/ash-quoting/dollar_squote_bash1.tests @@ -1,4 +1,5 @@ echo $'a\tb' +echo "$'a\tb'" echo $'a\nb' $'c\nd''ef' echo $'a\'b' $'c\"d' $'e\\f' echo $'a\63b' $'c\063b' $'e\0633f' -- 2.5.5 _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
