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á.