[SOLUCIONADO]Tonteria de script y no se donde tengo el error

#!/bin/bash
ip_ext=`wget -qO -  icanhazip.com`
ip_int=`cat /home/miko/ip.txt`
if [ $ip_ext != $ip_int ];
then
        sed -i 's/$ip_int/$ip_ext/g' *
fi


Basicamente el script es que compruebe que la IP externa es la que tengo en un archivo, y si no, pues la cambia en todos los archivos del directorio. Las dos variables funcionan, es decir, hago "echo $ip_ext" y me da la ip externa y lo mismo con ip_int pero al sed no le gustan las variables. Cuando hago manualmente " sed -i 's/a.b.c.d/z.x.v.b/g' * " si me lo cambia sin problemas. El fi tambien funciona porque si sustituyo el sed por un echo "Diferente", cuando es diferente me muestra el echo y si no, pues no xD


A ver si vosotros sabeis que es...

Muchas gracias.
mik0 escribió:
#!/bin/bash
ip_ext=`wget -qO -  icanhazip.com`
ip_int=`cat /home/miko/ip.txt`
if [ $ip_ext != $ip_ext ];
then
        sed -i 's/$ip_int/$ip_ext/g' *
fi


Basicamente el script es que compruebe que la IP externa es la que tengo en un archivo, y si no, pues la cambia en todos los archivos del directorio. Las dos variables funcionan, es decir, hago "echo $ip_ext" y me da la ip externa y lo mismo con ip_int pero al sed no le gustan las variables. Cuando hago manualmente " sed -i 's/a.b.c.d/z.x.v.b/g' * " si me lo cambia sin problemas. El fi tambien funciona porque si sustituyo el sed por un echo "Diferente", cuando es diferente me muestra el echo y si no, pues no xD


A ver si vosotros sabeis que es...

Muchas gracias.


if [ $ip_ext != $ip_ext ]

No estás comparando la variable consigo misma?
Hace mucho que no toco bash y de hecho nunca he indagado demasiado en el asunto, lo digo por si por alguna razón que desconozco lo estás haciendo a propósito.
Alber_h escribió:
mik0 escribió:
#!/bin/bash
ip_ext=`wget -qO -  icanhazip.com`
ip_int=`cat /home/miko/ip.txt`
if [ $ip_ext != $ip_ext ];
then
        sed -i 's/$ip_int/$ip_ext/g' *
fi


Basicamente el script es que compruebe que la IP externa es la que tengo en un archivo, y si no, pues la cambia en todos los archivos del directorio. Las dos variables funcionan, es decir, hago "echo $ip_ext" y me da la ip externa y lo mismo con ip_int pero al sed no le gustan las variables. Cuando hago manualmente " sed -i 's/a.b.c.d/z.x.v.b/g' * " si me lo cambia sin problemas. El fi tambien funciona porque si sustituyo el sed por un echo "Diferente", cuando es diferente me muestra el echo y si no, pues no xD


A ver si vosotros sabeis que es...

Muchas gracias.


if [ $ip_ext != $ip_ext ]

No estás comparando la variable consigo misma?
Hace mucho que no toco bash y de hecho nunca he indagado demasiado en el asunto, lo digo por si por alguna razón que desconozco lo estás haciendo a propósito.


error al "copiar" xd. luego lo edito que estoy desde el movil pero es ip_int != ip_ext


ya esta editado.
        sed -i 's/'$ip_int'/'$ip_ext'/g' *
JanKusanagi escribió:
        sed -i 's/'$ip_int'/'$ip_ext'/g' *



Exacto xD

Muchas gracias Jan!
4 respuestas