No comando a seguir, cat pega o conteúdo do here-doc e o redireciona para o arquivo chamado conf:
cat > conf << EOF
var1="cat"
var2="dog"
var3="hamster"
EOF
Como entender a ordem dos comandos aqui? O bash
primeiro processa todo o resto (parte do documento aqui) e, como etapa final, parece a > conf
parte?
bash
shell
here-document
Martin
fonte
fonte
cat > file_name << blah
é que, antes de executar,cat
o stdout do shell é conectado ao arquivo nomeadofile_name
e o stdin do shell é conectado ao here-doc ?open
foi chamado antesdup2
.Bem, vamos descobrir:
Dang. Eu acho que deve estar fazendo a
>"$file"
parte primeiro então. Mas e se...?... nenhum erro ...?
Como parece, a ordem é importante.
fonte
Quando
bash
cria o processo a ser executadocat
, ele abreconf
para gravação no descritor de arquivo 1 e abre um arquivo temporário (para o documento aqui) para leitura no descritor de arquivo 0, antes de iniciarexec
o programa. Nesse caso, não importa realmente em qual ordem essas ações acontecem.A ordem se torna significativa quando os descritores de arquivos são reatribuídos, por exemplo, com
2>&1
.fonte