O date -r e esse sabor de stat são específicos do GNU. Talvez você tenha sido informado por um usuário do Linux e esteja usando outro sistema.
Infelizmente, não há um comando padrão para obter essas informações de maneira confiável. O mais portátil que você poderia conseguir seria:
modDate=$(perl -MPOSIX -le '@s=stat shift or die$!;
print strftime "%Y-%m-%d", localtime $s[9]' -- "$1") || exit
zsh tem seu próprio comando stat incorporado:
zmodload zsh/stat
zstat -F %F +mtime -- "$1"
(esses dois comandos acima, para links simbólicos, retornariam a hora da modificação do destino do symlink como GNU date -r , se você quiser o tempo do symlink (como no seu comando GNU stat ), mude stat a lstat na solução perl ou adicione -L a zstat ).
Além disso, você esqueceu as aspas duplas em torno de suas variáveis e você não deve usar echo para dados arbitrários.