From 40cfe6a3c6691b0049986783f1d4e4402ee25843 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Tue, 11 Jan 2022 11:18:30 -0500 Subject: fix parsing variables in double quoted strings --- src/parse/test_ast.rs | 7 +++++++ src/shell.pest | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/parse/test_ast.rs b/src/parse/test_ast.rs index 456684b..3142928 100644 --- a/src/parse/test_ast.rs +++ b/src/parse/test_ast.rs @@ -304,6 +304,13 @@ fn test_parts() { "echo \"$HOME/bin\"", cs!(p!((0, 16), e!(w!("echo"), w!(wpv!("HOME"), wpd!("/bin"))))) ); + parse_eq!( + "echo \"dir: $HOME/bin\"", + cs!(p!( + (0, 21), + e!(w!("echo"), w!(wpd!("dir: "), wpv!("HOME"), wpd!("/bin"))) + )) + ); parse_eq!( "echo $HOME/bin", cs!(p!((0, 14), e!(w!("echo"), w!(wpv!("HOME"), wpb!("/bin"))))) diff --git a/src/shell.pest b/src/shell.pest index d09ccbc..8a51070 100644 --- a/src/shell.pest +++ b/src/shell.pest @@ -6,7 +6,7 @@ bareword_char = @{ !("|" | ";" | "\"" | "'" | "$" | "{" | WHITESPACE | COMMENT) ~ ANY } single_string_char = @{ basic_escape_char | (!"'" ~ ANY) } -double_string_char = @{ escape_char | (!"\"" ~ ANY) } +double_string_char = @{ escape_char | (!("\"" | "$") ~ ANY) } redir_prefix = @{ ("in" | "out" | "err" | ASCII_DIGIT*) ~ (">>" | ">" | "<") ~ WHITESPACE* -- cgit v1.2.3-54-g00ecf