From 37ad2f8c1fbb6740d1f31541abea5cb23c854da4 Mon Sep 17 00:00:00 2001 From: Neved4 <63655535+Neved4@users.noreply.github.com> Date: Fri, 15 Nov 2024 18:48:41 +0100 Subject: [PATCH 1/3] Add support for implicit `$@` --- translate/translate.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/translate/translate.go b/translate/translate.go index f469b34..210e516 100644 --- a/translate/translate.go +++ b/translate/translate.go @@ -189,20 +189,25 @@ func (t *Translator) command(c syntax.Command) { unsupported(c) } t.str("for ") + switch l := c.Loop.(type) { case *syntax.WordIter: - t.printf("%s in", l.Name.Value) + t.printf("%s", l.Name.Value) + if l.InPos.IsValid() { + t.str(" in") for _, w := range l.Items { t.str(" ") t.word(w, false) } } else { - unsupported(c) + t.str(" in \"$argv\"") } + default: unsupported(c) } + t.indent() t.body(c.Do...) t.outdent() From 0b5c65b5cdc8232ce77a1f50483fe24dc9882dd7 Mon Sep 17 00:00:00 2001 From: Neved4 <63655535+Neved4@users.noreply.github.com> Date: Fri, 15 Nov 2024 19:20:27 +0100 Subject: [PATCH 2/3] Fix expansion by removing double quotes --- translate/translate.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translate/translate.go b/translate/translate.go index 210e516..192f483 100644 --- a/translate/translate.go +++ b/translate/translate.go @@ -201,7 +201,7 @@ func (t *Translator) command(c syntax.Command) { t.word(w, false) } } else { - t.str(" in \"$argv\"") + t.str(" in $argv") } default: From 09cc3093d4a58659cd1244fa34b7c786031970b1 Mon Sep 17 00:00:00 2001 From: Neved4 <63655535+Neved4@users.noreply.github.com> Date: Mon, 18 Nov 2024 13:43:54 +0100 Subject: [PATCH 3/3] Add tests for implicit `$@` --- translate/translate_test.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/translate/translate_test.go b/translate/translate_test.go index cb49996..946fe44 100644 --- a/translate/translate_test.go +++ b/translate/translate_test.go @@ -340,6 +340,10 @@ for i in a b c ; do fi echo yes done +for cmd +do + echo "$cmd" +done time sleep 1 while true; do echo 1 @@ -399,6 +403,9 @@ for i in a b c end echo yes end +for cmd in $argv + echo "$cmd" +end time sleep 1 while true echo 1