• mumblerfish@lemmy.world
    link
    fedilink
    arrow-up
    18
    ·
    11 个月前

    Is there not also a way to disallow empty variables in the script, I think it is set -u? Then you don’t have to keep thinking “should I add a :? here because if empty it may lead to disaster” all the time. Might be even safer.

      • deadbeef79000@lemmy.nz
        link
        fedilink
        arrow-up
        8
        ·
        11 个月前

        Yep! I always do this too.

        TL;DR: e aborts the whole script on a non-zero error. u aborts when using an undefined variable. -o pipefail aborts a piped compound command when one of the piped commands fail.

        Any other way lies madness. Or erasing the whole filesystem apparently!

    • deadbeef79000@lemmy.nz
      link
      fedilink
      arrow-up
      7
      ·
      edit-2
      11 个月前

      Yes! But -u is for undefined variables. It won’t stop a defined variable with an empty value. E.g foo="".

      Also ? and :? have the advantage of telling you right then and there where the variable use is that it must be defined or not empty… having to trek back to (likely) the top of the script to check is easily forgotten.