> On Mar 23, 2021, at 11:43 PM, Eli Schwartz <eschwa...@archlinux.org> wrote: > > On 3/23/21 11:24 PM, L A Walsh wrote: >> Too often I end up having to write something like >> if (($#)); then <func|exec> "$@" >> else <func|exec> #<func|exec> = function or executable call >> fi >> >> It would be nice to have a expansion that preserves arg boundaries >> but that expands to nothing when there are 0 parameters >> (because whatever gets called still sees "" as a parameter) >> >> So, example, something like: >> >> $~ == "$@" #for 1 or more params >> $~ == no param when 0 param, # so for the above if/else/endif >> one could just use 1 line: > > It's not clear to me, how you expect this to differ from the existing > behavior of "$@" or "${arr[@]}" which already expands to <nothing> > rather than an actual "" parameter.
The original message does recall the behavior of the earliest Bourne shells [1][2], but that is surely not relevant here, given the use of ((...)). Right? RIGHT??? [1]: https://www.in-ulm.de/~mascheck/various/bourne_args/ [2]: https://www.gnu.org/software/autoconf/manual/autoconf-2.70/html_node/Shell-Substitutions.html#index-_0022_0024_0040_0022 vq