On 10/25/2017 3:34 PM, Warren Young wrote:
On Oct 25, 2017, at 11:28 AM, Mark Haney <mark.haney@xxxxxxxxxxx> wrote:
An associative array was the first thing I thought of, then realized BASH doesn't do those.
But it does: in Bash 4, only.
If you mean you must still use Bash 3 in places, then yeah, you’ve got a problem… one probably best solved by switching to some other language once the program grows beyond Bash 3’s natural scope.
I was trying to think of which languages I know well which require even more difficult solutions than the Bash 4 one. It’s a pretty short list: assembly, C, and MS-DOS batch files. By “C” I’m including anything of its era and outlook: Pascal, Fortran…
I think even Tcl beats Bash 4 on this score, and it’s notoriously minimal in its feature set.
Here’s a brain-bender: You could probably do it with sqlite3 with fewer lines of code than my Bash 4 offering. :)
I honestly expected there to be a fairly straight forward way to do it in BASH, but I was sadly mistaken.
Oh, I don’t know, there must be a way to do it without associative arrays, but you’d only get points for the masochism value in doing without.
Array N holds the names and array T holds the totals. For each line in
the file, you iterate through N to find the name and then add the number
to the same index in T (or create a new entry in both arrays if you
don't find it). Then you just have to iterate through both arrays and
print off the names from N and the totals from T. It's a pain, but it's
doable.
Sorry, I'm too lazy to write code for this... :)
--
Bowie
_______________________________________________
CentOS mailing list
CentOS@xxxxxxxxxx
https://lists.centos.org/mailman/listinfo/centos