From 8b710c8969cf38b432fe81931fcce5ea8c8ba05c Mon Sep 17 00:00:00 2001 From: "John Ankarstr\\xf6m" Date: Thu, 3 Jun 2021 09:28:28 +0200 Subject: each: Support |, &&, || separators --- each | 12 ++++++------ each.1 | 16 ++++++++++++---- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/each b/each index bed5bb8..b1e5727 100755 --- a/each +++ b/each @@ -2,17 +2,17 @@ $i = 0; for (@ARGV) { - if (/^;$/) { - $i++; - next; - } + if (/^;$/) { $command .= '; '; next; } + if (/^&&$/) { $command .= '&& '; next; } + if (/^\|\|$/) { $command .= '|| '; next; } + if (/^\|$/) { $command .= '| '; next; } s/"/"'"'"/g; s/\$/\\\$/g; s/\\\$\+/\$/g; - $commands[$i] .= "\"$_\" " + $command .= "\"$_\" " } while () { chomp($ENV{x} = $_); - system($_) for @commands; + system($command); } diff --git a/each.1 b/each.1 index 9790be4..00780be 100644 --- a/each.1 +++ b/each.1 @@ -9,7 +9,7 @@ .Sh SYNOPSIS .Nm each .Ar command -.Op Ar \\\\; command ... +.Op Ar separator command ... . .Sh DESCIPTION .Pp @@ -17,7 +17,15 @@ runs each given .Ar command for every line read on standard input. -With a command, the contents of the line is assigned to the variable +.Ar separator +is one of +.Ql \&; , +.Ql | , +.Ql && +and +.Ql || . +.Pp +Within a command, the contents of the line is assigned to the variable .Ev x , which can be accessed with the normal shell variable interpolation syntax, except you need to put a plus sign after the dollar sign: @@ -30,9 +38,9 @@ $+{x%%.*} .Ed .Pp This syntax generally doesn't need to be quoted -when entered in the Bourne shell +when entered in the Bourne or Korn shells (unless you need to put commas inside the curly braces -or have files who names begin with +or have files whose names begin with .Ql $+ ) . .Sh AUTHORS .Pp -- cgit v1.2.3