5 ms·
I see 2 problems here: major: it does not work on POSIX shells, because ':' is not a valid function name and minor: the function itself should be changed to u
by gforce_de 5y ago
I see 2 problems here:
major: it does not work on POSIX shells, because ':' is
not a valid function name and
minor: the function itself should be changed to use
the builtin 'case' instead of the bashims [[ ... ]]
- jbbarth 5y agoHow is the POSIX non compliance a major problem? Does it have practical impacts when writing scripts that are not meant to be portable to other systems/shells?
- gforce_de 5y ago"Stick to portable constructs where possible, and you will make somebody's life easier in the future. Maybe your own."
- c0l0 5y agoHey, thanks for taking the time to read and commenting! :) Problem #1 (at least for the "advanced" part of the article's suggestion) is unfixable unless you boil the ocean and change the POSIX spec. I tried to make that clear in the prose, but might have failed at it. It's also the reason why I chose the title to refer to `bash` scripts in particular. Problem #2 becomes less relevant once you realize that problem #1 completely overshadows it. And in `zsh`, where you can also redefine `:` to invoke a custom function, tests via `[[` also work just like they do in bash.
- gforce_de 5y agowhat seems possible is: #!/bin/sh alias :=mydebug mydebug() { printf '%s\n' "$\*"; } foo=1 : this is a debugable comment bar=2