diff --git a/src/elements/command/case.rs b/src/elements/command/case.rs index 60aec650..d5e04ebb 100644 --- a/src/elements/command/case.rs +++ b/src/elements/command/case.rs @@ -146,6 +146,13 @@ impl CaseCommand { if feeder.len() == 0 { feeder.feed_additional_line(core)?; } + + if feeder.starts_with("esac") { + ans.text += &feeder.consume(4); + esac = true; + break; + } + let mut patterns = vec![]; if ! Self::eat_patterns(feeder, &mut patterns, &mut ans.text, core)? { break; diff --git a/src/elements/command/error b/src/elements/command/error new file mode 100644 index 00000000..ddcd8cab --- /dev/null +++ b/src/elements/command/error @@ -0,0 +1 @@ +../../../test/test_compound.bash diff --git a/test/test_compound.bash b/test/test_compound.bash index 7b46d1f5..43f744cf 100755 --- a/test/test_compound.bash +++ b/test/test_compound.bash @@ -439,6 +439,16 @@ aaa) echo OK ;; ') [ "$res" = "" ] || err $LINENO +res=$($com <<< ' +case xterm-color in + xterm-color|*-256color) color_prompt=yes;; +esac +echo $color_prompt +' +) +[ "$res" = "yes" ] || err $LINENO + + res=$($com <<< 'case aaa in aaa) echo OK1 ;;& bbb) echo OK2 ;& aaa) echo OK3 ;; esac') [ "$res" = "OK1