Live data from Hacker News

Type-ish – A runtime type checker for bash, in bash

github.com

11–19 of 19 posts

Re: Type-ish – A runtime type checker for bash, in bash

#11
post #8

Since no one has said it yet, please always use https://www.shellcheck.net/ on your scripts, you don't want to be That Guy https://github.com/ValveSoftware/steam-for-linux/issues/3671

I'm probably being too judgemental, but I don't get how people are so nonchalant about mutability and potentially destructive commands. Even in a Github Gist I'm scared enough to set -euo pipefail, put half a dozen checks before removing a folder...

Re: Type-ish – A runtime type checker for bash, in bash

#12
post #8

Since no one has said it yet, please always use https://www.shellcheck.net/ on your scripts, you don't want to be That Guy https://github.com/ValveSoftware/steam-for-linux/issues/3671

shellharden is also great, that semi-automate the process to conform with shellcheck

Re: Type-ish – A runtime type checker for bash, in bash

#13

Earlier quoted context omitted.

Booleans in shell scripts are little more than zero (true) and non-zero (false) exit codes.

Ok, right. But then it should still say either "booleans are just numbers" or "numbers can be interpreted as booleans, i.e. are truthy or falsy".

It's not that cut & dry, as bash is doing evaluations; 0 and 1 can both be "true" if simply used without an evaluation, but add logic and it starts to matter (grep returns 0 if hit, 1 if not).

    [[ 0 ]] && echo "hit 0"
    [[ 1 ]] && echo "hit 1"
    grep -q 127 /etc/hosts && echo "hit grep"
    grep -q 128 /etc/hosts || echo "miss grep"

Re: Type-ish – A runtime type checker for bash, in bash

#15

I used to somehow think Bash scripts were ideal given that they were fairly transparent, but I'll take a Go app or Rust program anyday now over something written in shell script. shfmt is an example.

Well, they are fairly transparent.

The problem is, they have a tendency to suddenly get horribly intransparent when they grow larger than maybe a few dozen lines.

Re: Type-ish – A runtime type checker for bash, in bash

#16
post #8

Since no one has said it yet, please always use https://www.shellcheck.net/ on your scripts, you don't want to be That Guy https://github.com/ValveSoftware/steam-for-linux/issues/3671

General recommendation specifically for the Valve-like case:

    set -o nounset
You can check variables as many ways you want, just do this too - safety net in case there's an eventual gap

Re: Type-ish – A runtime type checker for bash, in bash

#17
post #8

Since no one has said it yet, please always use https://www.shellcheck.net/ on your scripts, you don't want to be That Guy https://github.com/ValveSoftware/steam-for-linux/issues/3671

And use the so-called "Bash unofficial strict mode", as described elsewhere.

I prefer this summary of it, because the original includes stuff like changing IFS (the fields separators) which I agree with the Gist author to not include, because it is a Bad Idea to blindly suggest it universally.

EDIT: This gist:

https://gist.github.com/robin-a-meade/58d60124b88b60816e8349...

Re: Type-ish – A runtime type checker for bash, in bash

#19
post #8

Since no one has said it yet, please always use https://www.shellcheck.net/ on your scripts, you don't want to be That Guy https://github.com/ValveSoftware/steam-for-linux/issues/3671

You should also probably add either nullglob or failglob depending on your use case.

I would also add dotglob because it’s rarer for me to want only non-hidden files than it is for me to want all files.

Post reply on HN