Preciso criar o arquivo /opt/nginx/conf.d/default.conf
com este conteúdo via shell script e criar o arquivo se ele não existir:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
}
Como escrevo conteúdo de várias linhas por meio de um script de shell?
Eu criei o diretório
sudo mkdir -p /opt/nginx/conf.d
Mas não sei escrever um arquivo.
text-processing
files
nginx
user3142695
fonte
fonte
Respostas:
resumo: use
>>
para acrescentar, use[ -f file ]
para testar.tentar
cat <<EOF
é chamada de " documento aqui ".$server
será substituído por seu valor ou vazio se não definido.'EOF'
para evitar a substituição de var, se houver.você também pode ter vários ecos (isso pode ser doloroso de manter se houver muitos ecos)
anexado
não há prefpend direto no bash, use o arquivo temporário
ou edite
fonte
$
(se houver) não são tratados como variáveis e, portanto, não se expandiucat
os dois arquivos juntos e renomear o resultado.echo
s separados , ainda é mais eficiente ter apenas um redirecionamento, colocando-os em um bloco:{ echo "foo"; echo "bar"; echo "baz"; } >file
- dessa forma, não abriremos novamentefile
toda vez que quisermos escrever uma única linha para ele, e fechá-lo quando essa linha estiver concluída.cat << EOF | sudo tee /opt/nginx/conf.d/default.conf ...
Se o arquivo /opt/nginx/conf.d/default.conf não existir, imprima (f) a sequência estática no arquivo:
fonte
printf '%s\n' "first line" "second line"
talvez um pouco mais legível; dessa forma não é necessário para ler a seqüência inteira para descobrir onde os escapes são ..