The sad news is that the shellcheck binary does not really know how to deal with zsh scripts:
% shellcheck script.zsh
In script.zsh line 1:
#!/bin/zsh
^-- SC1071: ShellCheck only supports sh/bash/dash/ksh scripts. Sorry!
You can force shellcheck to interpret a zsh script with the --shell option:
% shellcheck --shell=bash dirlist.sh
This might show errors, such as Quote to prevent word splitting/globbing which aren’t really errors in zsh so its usefulness will be limited.
If you want a specific script to be always interpreted as a bash script by shellcheck you can also add this line:
# shellcheck shell=bash
in the script, right after the shebang line.
This can be useful if you use zsh in bash emulation mode with
emulate -LR bash
