[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Crear una variable al vuelo... y que sea interpretada como tal y no como texto.



2016-04-14 9:30 GMT-05:00 Camaleón <noelamac@gmail.com>:
> El Wed, 13 Apr 2016 22:36:50 -0500, Debia Linux escribió:
>
>> ########### TEXTO CORREGIDO EL ANTERIOR DEJA DE TENER VALOR #########
>
> (...)
>
>>> Deseo que la siguiente sentencia $`awk -F "|" '{ print $3 }'
>>> $RUTA'tmp1'` tome el valor de la variable $VAR1 y no que sea sustituido
>>> como texto.
>>>
>>> Ya que al revisar el $RUTA'archivo' me aparece el texto $VAR1 y no lo
>>> que debería ejecutar la variable VAR2 (FEO) que solo es una palabra.
>
> Dale un ojo a esto:
>
> printing variable inside awk
> http://stackoverflow.com/questions/1825509/printing-variable-inside-awk

Gracias, ya le heche un ojo, sin embargo se me ha complicado
entenderle, pero la noticia es que ya quedo SOLUCIONADO el problema.

Explico brevemente lo que hice (que no se que significa) me dio
resultado porque lo vi en un post. Si alguien me pudiera decir como
funciona, aprenderia mas.

La solucion es la siguiente:

El problema no es resolver la variable dentro de una variable en awk,
ni en sed, ni en otra aplicacion. el problema radica en la Variable
dentro de una Variable. Esto me di cuenta porque quise resolver el
problema mediante el comando echo pero me dio el mismo problema, me
imprimia el texto en lugar de una variable.

Asi que busque y la solucion estaba sencilla...

Tengo un script con los siguientes datos:

El archivo "1" contiene:
a|b|DEBIAN LINUX|BONITO|

El archivo "2" contiene:
a|b|MAC|RARO|

El archivo "3" contiene:
a|b|WINDOWS|FEO|

El archivo "documento" contiene:
|EL SISTEMA OPERATIVO ES: TEXTO-A-CAMBIAR

##### INICIA SCRIPT #####
#!/bin/bash

# Variables
DOCUMENTO="/home/user/documento"
VAR1="/home/user/1"
VAR2="/home/user/2"
VAR3="/home/user/3"

BONITO="DEBIAN-LINUX-ES-GRANDIOSO"
RARO="EL-SISTEMA-MAC-ES-PURA-SACADERA-DE-PLATA"
FEO="EL-SISTEMA-WINDOWS-ES-INESTABLE"

# Variable dentro de variable (que no era variable pero la convertimos
en variable al vuelo)
# que mostrara la palabra BONITO y que bonito se convertira en variable.

# Este texto se convertira en variable
e=`awk -F "|" '{ print $4 }' $VAR1`

# Muestro solo para saber si muestra el texto BONITO
echo "EL SISTEMA OPERATIVO DEBIAN LINUX ES EL MAS: $e"
read

# Reemplazo TEXTO-A-CAMBIAR por la variable "al vuelo"
sed -i "s/TEXTO-A-CAMBIAR/${!e}/g" $DOCUMENTO

# Muestro como se reemplazo el texto en el documento
cat $DOCUMENTO
read

clear
echo "Quedo SOLUCIONADO el problema"
echo "Solo me gustaria que me dijeran tecnicamente"
echo "como funciona {!e}"

# Muestro por pantalla todas sus aportaciones.
echo "Agradezco a toda la comunidad GNU"
echo "Porque el conocimiento lo hacemos todos"
echo " y es para todos."
echo ""
echo "P.D. La solucion la encontre navegando, la posteo un usuario
linux hace tiempo."
echo "No recuerdo el vinculo"
sleep 5


>
> Saludos,
>
> --
> Camaleón
>


Reply to: