On 2024-04-12 12:09, Bart Schaefer wrote: > None of that is about $#. $# just counts either characters in a > string or elements in an array, full stop. Right, it's a question of getting the splitting correct. > What you're asking for is a dissertation on how to split text into > arrays. I have no idea what you mean by "without spaces" and there's > no inherent definition of a "paragraph" I know it, thus the air-quotes, In one of my tests I had three consecutive outputs from aptitude written to the array and at some point the count was 3, so somehow each separate output got merged into one element. > so the best you could get from > this is characters, words, and lines -- but even for words you need to > explain whether you mean "shell words" (separated by $IFS characters) > or something else, including whether quotes matter. It is a bit confusing. > Further, you seem > to be starting from scalar text sometimes, and text that's already > split into an array other times -- in the latter case you have to > explain whether and how you want the array re-joined into a block of > text before re-splitting. I've got a whole bunch of that figured out today.  What I thought were arrays were scalars that just happened to print nicely on separate lines where wanted but not due to '\n''s.  And what I thought line splitting -- (f) -- did was enter '\n's into the body of the variable -- a guy might be forgiven for thinking that -- but no it's dollar signs.  And efforts to force '\n's' were disastrous. Some quality time with typedef -p really helped.  Sorta funny, everything was working fine, but there were hidden disasters lurking that surfaced for that most trivial of reasons -- but forced me to redo quite a bit of stuff where things really are arrays and nevermind the '\n's.  And I get my line counts honestly now :-)  One thing: it sure is hard to hang on to blank lines.  I wish there was some option to default to preserving them. > The shell is not a word processor and doesn't understand your > conceptualization of text formatting. Very true.  But I focus on what I can see and if it looks right it's easy to think it is right.  Anyway, thanks to Lawrence much as been learned. BTW $# is a very convenient way of detecting how things are split, now that I know that scalars always return character counts and arrays, element counts.  Easy!