Necesito crear el archivo /opt/nginx/conf.d/default.confcon este contenido a través de script de shell y crear el archivo si no existe:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
}
¿Cómo escribo contenido multilínea a través de un script de shell?
Creé el directorio
sudo mkdir -p /opt/nginx/conf.d
Pero no sé cómo escribir un archivo.
text-processing
files
nginx
usuario3142695
fuente
fuente

Respuestas:
resumen: use
>>para agregar, use[ -f file ]para probar.tratar
cat <<EOFse llama " documento aquí ".$serverserá reemplazado por su valor, o vacío si no está definido.'EOF'para evitar reemplazar var, si corresponde.También puede tener eco múltiple (esto podría ser doloroso de mantener si hay demasiado eco)
pre-pendiente
no hay un antecedente directo en bash, ya sea use un archivo temporal
o editarlo
fuente
$(si está presente) no son tratados como variables y por tanto no siendo ampliadocatlos dos archivos juntos y cambiar el nombre del resultado.echo, es aún más eficiente tener solo una redirección, colocándolos en un bloque: de{ echo "foo"; echo "bar"; echo "baz"; } >fileesa manera, no volveremos a abrirfilecada vez que solo queremos escribir una sola línea en él, y cerrándolo cuando termine esa línea.cat << EOF | sudo tee /opt/nginx/conf.d/default.conf ...Si el archivo /opt/nginx/conf.d/default.conf no existe, imprima (f) la cadena estática en el archivo:
fuente
printf '%s\n' "first line" "second line"quizás un poco más legible; de esa manera no es necesario leer toda la secuencia para descubrir dónde están las escapadas ...