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

Splitting into a one element array

I am writing a function where I want to split the $LBUFFER on whitespace,
and then handle the last element in the resulting array. My initial attempt
looked like this:

local dir=${${(z)LBUFFER}[-1]}

This works if $LBUFFER contains more than one word, but fails if it is one
word only. I tested the behavior with the following function:

trysplit() {
    local astring="aaa bbb"
    print -l ${=astring}
    print -l ${${=astring}[-1]}
    local cstring="ccc"
    print -l ${=cstring}
    print -l ${${=cstring}[-1]}

with this result:

% trysplit




So, my interpretation of the above is that IF the split results in only one
word, the result is not handled as an array with one element, but as a
regular string. And then only the first letter of the $cstring is printed.

Is there some way to handle this that I have missed, or do I need to check
the split result for size, and then treat the one-element case differently?

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