Necesito crear el archivo /opt/nginx/conf.d/default.conf
con 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 <<EOF
se llama " documento aquí ".$server
será 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 ampliadocat
los 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"; } >file
esa manera, no volveremos a abrirfile
cada 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 ...