diff --git a/src/lib/parser/quotes.rs b/src/lib/parser/quotes.rs index d494132ffcbc9f3834e602fa1f6ca8459b2d4684..61ddfc91455ab7096d77e1bb5a9fff9c2c0dd641 100644 --- a/src/lib/parser/quotes.rs +++ b/src/lib/parser/quotes.rs @@ -192,7 +192,7 @@ impl<I: Iterator<Item = u8>> Terminator<I> { self.array -= 1; Some(b']') } - b'#' if prev_whitespace => { + b'#' if prev_whitespace || self.inner.prev().is_none() => { self.inner.find(|&c| c == b'\n'); if self.array == 0 && self.subshell == 0 && !self.and_or && !self.empty { self.terminated = true; diff --git a/src/lib/shell/binary/readln.rs b/src/lib/shell/binary/readln.rs index 205366f9186adbcf58c50dc7da3c1ffb33aa4e61..f690a3edbfde3f505c5fd6d6b390418d6a77a053 100644 --- a/src/lib/shell/binary/readln.rs +++ b/src/lib/shell/binary/readln.rs @@ -101,7 +101,7 @@ pub(crate) fn readln(shell: &mut Shell) -> Option<String> { match line { Ok(line) => { - if line.bytes().any(|c| !c.is_ascii_whitespace()) { + if line.bytes().next() != Some(b'#') && line.bytes().any(|c| !c.is_ascii_whitespace()) { shell.flags |= flags::UNTERMINATED; } Some(line)