Para referência:
em zsh , você pode usar a matriz associativa especial $mapfile que mapeia o conteúdo do arquivo nomeado como a chave (observe que ela não é relacionada e é anterior à bash ' mapfile builtin (que não mapeia arquivos) por uma década ou mais). Ele usa mmap() , então só pode ser usado em arquivos regulares.
zmodload zsh/mapfile
var=$mapfile[filename]
Não produz nada se o arquivo não puder ser aberto ou mmapado. Para verificar erros, você pode usar a variável $ERRNO special:
ERRNO=0
var=$mapfile[filename]
if ((ERRNO)); then
: the mapping failed
fi
$ERRNO valores podem ser convertidos em ENOENT , EACCESS ... códigos com a matriz $errnos no módulo zsh/system ou em sequências de erros com syserror integrado em zsh/system bem.
Você também pode fazer mapfile[filename]=$var para alterar o conteúdo do arquivo, é um verdadeiro mapeamento.
Observe que, embora $(<filename) retire todos os caracteres de nova linha do conteúdo de filename , $mapfile[filename] expande para todo o conteúdo do arquivo (incluindo arquivos binários) como está.