Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: triviality regarding $# counts



More context would clarify what you're trying to do and how best to do it. Without that context, the approach you're currently taking feels deeply weird. Can you not provide sample input and desired output? Maybe with all of your code rather than a few snippets from "so deep they need eval", whatever that means...

On Fri, Apr 12, 2024 at 9:13 PM Ray Andrews <rayandrews@xxxxxxxxxxx> wrote:

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!



--
Mark J. Reed <markjreed@xxxxxxxxx>


Messages sorted by: Reverse Date, Date, Thread, Author