For example, compare this in zsh:
``` case $input in "foo") echo "Input is foo" ;; "bar") echo "Input is bar" ;; ) echo "Input does not match any case" ;; esac ```
with this in Fish shell:
``` switch $input case "foo" echo "Input is foo" case "bar" echo "Input is bar" case "" echo "Input does not match any case" end ```
And it was a really small example. Fish can do much more with "simpler" and not arcane syntax.
Fish also has `string` to work with string much much easier [0].
You miss `oh-my-zsh`? Fish has `oh-my-zsh` [1].
You miss integration with `fzf`? Fish also has it.
One caveat is Fish is not POSIX-compatible. But I don't find it a compelling reason to not using it.
Personally, I use Fish as my main shell. I do use zsh/Bash in my company though since they're more ubiquitous.