linux - programas - scripts bash ejemplos
¿Cómo se escribe un archivo de configuración de varias líneas usando BASH y se usan variables en multilínea? (5)
¿Cómo puedo escribir líneas múltiples en un archivo llamado myconfig.conf
usando BASH?
#!/bin/bash
kernel="2.6.39";
distro="xyz";
echo <<< EOL
line 1, ${kernel}
line 2,
line 3, ${distro}
line 4
line ...
EOL >> /etc/myconfig.conf;
cat /etc/myconfig.conf;
El siguiente mecanismo ayuda a redirigir varias líneas al archivo. Mantenga la cadena completa debajo de "
para que podamos redirigir los valores de la variable.
#!/bin/bash
kernel="2.6.39"
echo "line 1, ${kernel}
line 2," > a.txt
echo ''line 2, ${kernel}
line 2,'' > b.txt
El contenido de a.txt
es
line 1, 2.6.39
line 2,
El contenido de b.txt
es
line 2, ${kernel}
line 2,
La sintaxis ( <<<
) y el comando utilizado ( echo
) es incorrecto.
Correcto sería:
#!/bin/bash
kernel="2.6.39"
distro="xyz"
cat >/etc/myconfig.conf <<EOL
line 1, ${kernel}
line 2,
line 3, ${distro}
line 4 line
...
EOL
cat /etc/myconfig.conf
Las soluciones heredoc son ciertamente la forma más común de hacer esto. Otras soluciones comunes son:
echo ''line 1, ''"${kernel}"'' line 2, line 3, ''"${distro}"'' line 4'' > /etc/myconfig.conf
y
exec 3>&1 # Save current stdout exec > /etc/myconfig.conf echo line 1, ${kernel} echo line 2, echo line 3, ${distro} ... exec 1>&3 # Restore stdout
Si no desea que se reemplacen las variables, debe rodear EOL con comillas simples.
cat >/tmp/myconfig.conf <<''EOL''
line 1, ${kernel}
line 2,
line 3, ${distro}
line 4 line
...
EOL
Ejemplo anterior:
$ cat /tmp/myconfig.conf
line 1, ${kernel}
line 2,
line 3, ${distro}
line 4 line
...
#!/bin/bash
kernel="2.6.39";
distro="xyz";
cat > /etc/myconfig.conf << EOL
line 1, ${kernel}
line 2,
line 3, ${distro}
line 4
line ...
EOL
esto hace lo que quieres