diff --git a/crates/nu-command/src/system/run_external.rs b/crates/nu-command/src/system/run_external.rs index b24b08913..355d52213 100644 --- a/crates/nu-command/src/system/run_external.rs +++ b/crates/nu-command/src/system/run_external.rs @@ -411,7 +411,7 @@ impl ExternalCommand { for arg in self.args.iter() { let mut arg = Spanned { - item: trim_enclosing_quotes(&arg.item), + item: remove_quotes(trim_enclosing_quotes(&arg.item)), span: arg.span, }; @@ -527,6 +527,19 @@ fn trim_enclosing_quotes(input: &str) -> String { } } +fn remove_quotes(input: String) -> String { + let mut chars = input.chars(); + + match chars.next_back() { + Some('"') => chars + .collect::() + .replacen('"', "", 1) + .replace(r#"\""#, "\""), + Some('\'') => chars.collect::().replacen('\'', "", 1), + _ => input, + } +} + // Receiver used for the RawStream // It implements iterator so it can be used as a RawStream struct ChannelReceiver {