• Laser ( Laser@feddit.org ) 
    link
    fedilink
    arrow-up
    15
    ·
    10 months ago

    Not sure I’d call what bash has functions. They’re closer to subroutines in Basic than functions in other languages, as in you can’t return a value from them (they can only return their exit code, and you can capture their stdout and stderr). But even then, they are full subshells. It’s one of the reasons I don’t really like Bash, you’re forced into globally or at least broadly-scoped variables. Oh, and I have no clue right now how to find where in your pipe you got a non-null exit code.

    It’s not a big problem for simple scripting, but it makes things cumbersome once you try to do more.

    • I really like bash when dealing with even somewhat advanced scripting. Like the 300 LOC scraper I have written over the past two days which horribly parses HTML files using grep | sed.

      It’s genuinely so much more fun to do this with Bash than, say, Python. I have once written a scraper using Beautifulsoup and I have no desire to do so ever again.

      Honestly, only Haskell manages to beat Bash in how satisfying it feels when you manage to get something working well.

      • Laser ( Laser@feddit.org ) 
        link
        fedilink
        arrow-up
        2
        ·
        10 months ago

        Bash has its upsides too, like the fact that it has arrays / lists and dictionaries / hashmaps. In my opinion, it gets iffy though when you need to do stuff with IFS; at that point one might be better off just using specialized tools.

        Not saying working bash isn’t good enough, but it can break in very surprising ways is my experience.