I know that there are ten different alternatives. Why don’t we simply improve the basic stuff?

  • gnuhaut
    link
    fedilink
    arrow-up
    3
    arrow-down
    1
    ·
    8 months ago

    I disagree. The vast majority of the time when writing shell scripts, I quote variables, because that’s almost always what I want. Splitting is basically only useful if you have a list of arguments, and you know for sure there are no spaces in any of the arguments (so no filenames).

    (The workarounds in pure POSIX shell are btw super annoying if you want to pass a list arguments that may have spaces in them: You can abuse the special "$@" variable. Or you could probably also construct something with xargs.)

    • taladar@sh.itjust.works
      link
      fedilink
      arrow-up
      3
      ·
      edit-2
      8 months ago

      Every single command, option and argument in the shell is split by spaces, regardless of what it contains. That is clearly the more common case. I am not talking about splitting when the space comes out of a variable but in general, as part of the syntax.

      I am well aware of how quoting works to avoid accidental splitting and it is an absolute non-issue in practice once you get used to quoting things, about as annoying as the fact that you have to quote strings in every other programming language, i.e. not at all.

      • gnuhaut
        link
        fedilink
        arrow-up
        2
        ·
        edit-2
        8 months ago

        Ah that’s your point. Yeah I agree that splitting literal a b c is convenient. It is surprising to many (like here) that this happens after variable substitution, and that’s not very convenient since you almost never want that. You could define this to happen the other way around, but then you’d obviously have to invent a new syntax for explicit splitting, which would be its own kind of annoying.

        Edit: YSH (oil) does that btw. See here.