summaryrefslogtreecommitdiff
path: root/Src/builtin.c
diff options
context:
space:
mode:
Diffstat (limited to 'Src/builtin.c')
-rw-r--r--Src/builtin.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/Src/builtin.c b/Src/builtin.c
index 175607644..71fc04ce1 100644
--- a/Src/builtin.c
+++ b/Src/builtin.c
@@ -5549,7 +5549,14 @@ bin_read(char *name, char **args, Options ops, UNUSED(int func))
*bptr = '\0';
#endif
/* dispose of word appropriately */
- if (OPT_ISSET(ops,'e')) {
+ if (OPT_ISSET(ops,'e') ||
+ /*
+ * When we're doing an array assignment, we'll
+ * handle echoing at that point. In all other
+ * cases (including -A with no assignment)
+ * we'll do it here.
+ */
+ (OPT_ISSET(ops,'E') && !OPT_ISSET(ops,'A'))) {
zputs(buf, stdout);
putchar('\n');
}