I’ve been struggling with a rather complex shell script, and it’s becoming apparent that Bash might not be the best choice for this particular task. While I usually gravitate towards statically typed languages like Go or Rust, I’ve noticed that many people recommend alternative languages such as Lua or Python for scripting tasks.

I’m curious to know your opinions and experiences with scripting languages for larger or more intricate shell scripts. Have you ever encountered a situation where Bash just didn’t cut it, and if so, which scripting languages did you turn to for a more effective solution? Are there any specific languages you found particularly suitable for debugging, testing, or handling complex logic in your shell scripts?

  • MajorHavoc@lemmy.world
    link
    fedilink
    arrow-up
    32
    arrow-down
    4
    ·
    edit-2
    1 year ago

    When I’m doing too much to maintain in bash, and not enough to merit Python, I use PowerShell.

    My controversial take: if you’re looking for a better scripting language and haven’t tried PowerShell, you should give it a try.

    It’s weird that Microsoft made a real shell.

    PowerShell is actually open source, and it runs everywhere, including Mac and Linux. On Windows and Ubuntu, it’s already installed.

    Powershell’s quality JSON and CSV handling is a huge game changer for quick scripts. The webrequest module is high quality. File operations are a breeze. Unlike bash, PowerShell can be formated to be pretty readable, when you care. Environment variable handling is mildly improved. Resusable code via modules is huge for quality of life.

    PowerShell is the bash rewrite with lessons learned we all have wanted, but it’s not on a lot Linux folks radar because Microsoft published it.

    • thesmokingman@programming.dev
      link
      fedilink
      arrow-up
      13
      arrow-down
      1
      ·
      1 year ago

      I’m trying to understand where you’d want to use PowerShell over Python. What’s something that’s in-between bash and Python?

      • MajorHavoc@lemmy.world
        link
        fedilink
        arrow-up
        14
        ·
        edit-2
        1 year ago

        Good question.

        I choose PowerShell over Python when I need to call out to an existing command line utility, because I find the Python subprocess module is a huge pain in the ass.

        PowerShell has about 80% of the power and readability of Python, while actually being a native shell.

        • thesmokingman@programming.dev
          link
          fedilink
          arrow-up
          4
          ·
          1 year ago

          Yeah, that’s fair. I was wondering if you’d call that out. Popen is rather opaque. I don’t know that I’d go so far as to try to remember yet another language to avoid it. I respect the decision though, especially with the portability of modern PowerShell.

    • Thunderwolf@lemmy.world
      link
      fedilink
      arrow-up
      9
      ·
      edit-2
      1 year ago

      This 100%. I liked bash scripting when I was in college. Took some time to actually learn powershell, and it’s been amazing. Steep learning curve in the beginning, but it’s worth it

      Edit: I had also meant to mention the fact that powershell definitely feels a little similar to bash. I mean, not quite the same. Powershell is more object oriented, whereas bash is more text oriented. Powershell for structured data is nice.

    • ReluctantMuskrat@lemmy.world
      link
      fedilink
      arrow-up
      2
      ·
      1 year ago

      Couldn’t agree more. It’s a great shell and scripting language. It’s object-oriented nature, native support for virtually every text format (csv, json, xml) and great libraries for others (yaml, excel), awesome regex and web/rest services support… it’s hard to beat and works on virtually every platform.

      Too few people in the Linux community will even look at it though since it has MS name on it.

    • aluminium@lemmy.world
      link
      fedilink
      arrow-up
      2
      ·
      1 year ago

      not to mention that you have all the dotnet ecosystem at your fingertips. Wanna write a WPF application? Go ahead. You want to use ML.net? A bit clunky but doable.