Are you sure it doesn’t work on zsh? It’s valid POSIX shell code, and like bash, zsh is a superset of POSIX, at least if I remember correctly.
This is not to goad you into destroying your filesystem. Replace the rm with something relatively harmless like echo"BANG! You're dead!" if you decide to test it.
Key here is the outer [] and interaction of $[], test doesn’t have == by default in standard posix, so no this isn’t posix shell or bourne compatible. Tis but another bashism. I could probably force zsh into a more bourne mode to try it but its definitely not portable bourne shell its bash.
$ [ $[ $RANDOM % 6 ] == 0 ] && echorm || echo ok
zsh: = not found
$ zsh --version
zsh 5.9 (x86_64-pc-linux-gnu)
== should be -eq for this to be posix/bourne portable, you could use = but -eq is for numeric comparisons so not quite right.
Are you sure it doesn’t work on zsh? It’s valid POSIX shell code, and like bash, zsh is a superset of POSIX, at least if I remember correctly.
This is not to goad you into destroying your filesystem. Replace the
rm
with something relatively harmless likeecho "BANG! You're dead!"
if you decide to test it.Key here is the outer [] and interaction of $[], test doesn’t have == by default in standard posix, so no this isn’t posix shell or bourne compatible. Tis but another bashism. I could probably force zsh into a more bourne mode to try it but its definitely not portable bourne shell its bash.
$ [ $[ $RANDOM % 6 ] == 0 ] && echo rm || echo ok zsh: = not found $ zsh --version zsh 5.9 (x86_64-pc-linux-gnu)
== should be -eq for this to be posix/bourne portable, you could use = but -eq is for numeric comparisons so not quite right.