scripts script programas pasar parametros operaciones manejo ejemplos comando cadenas aritmeticas linux bash bash4

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