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

Re: globbing in conditional expressions



On May 8, 12:20pm, Peter Stephenson wrote:
}
} > All three solutions first set an array to the result of the glob.  Is
} > there a solution that short-circuits, i.e., that returns as soon as a
} > single matching filename is found?
} 
} No, unless someone remembers I feature I don't know about, because
} internally the glob proceeds until it's finished

Well ... you can do this horrible hack:

  found=
  # Stop after finding exactly one directory, for example:
  : **/*(e+'[[ -d $REPLY ]] && { found=$REPLY ; kill -INT $$ }'+)
  print $found

Of course to make this "useful" all the stuff that you'd test in the
glob qualifiers you instead need to test in the [[ ... ]] before you
assign found=$REPLY, probably by using the zsh/stat module; and you
can't avoid scanning an unknown number of potential NON-matches up
to the point where $found gets set, so in the worst case it's no
better (and probably much worse) than just letting the glob finish.



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