Problemas con un shell script

Imagen de manu.ramon
0 puntos

Hola a todos.

Tengo un problema con el siguiente script (prueba.sh):

#!/bin/sh

 

export idia=`date +%d`

export imes=`date +%m`

export iyear=`date +%y`

export memo=`date +%M%H%d%S`

echo ' Fecha: ' $idia $imes $iyear

echo 'Semilla: ' $memo

 

## EOF ##

Cuando copio las lineas en la consola sale bien, pero cuando ejecuto el script (sh prueba.sh) me sale algo raro:

07cha: 25

Semilla: 56105226

Por qué puede ser. Otra duda. Las variables idia, imes, iyear y memo las podré usar más adelante o sólo tienen validad mientras se ejecuta el script.

Gracias por todo.

Imagen de joseluis
+1
0
-1

Cuando copio las lineas en la consola sale bien, pero cuando ejecuto el script (sh prueba.sh) me sale algo raro:

07cha: 25

Semilla: 56105226

Me parece que el script lo tienes en formato DOS, echa un vistazo a esta respuesta.

Las variables idia, imes, iyear y memo las podré usar más adelante o sólo tienen validad mientras se ejecuta el script.

Sólo las podrás usar en el script y en los procesos que se lancen desde ese script (para esto último es el export), pero una vez finalice el script no las tendrás disponibles. Es decir el export sólo te sirve para los procesos hijos pero no para el padre. Si quieres tenerlas disponibles en la shell aunque el script haya finalizado tendrás que lanzarlo así

 . /ruta_al_script/mi_script

Fijate que entre el . y la / de la ruta hay un espacio. Si lo ejecutas así cuando termine mi_script y te devuelva al prompt de la shell prueba a ejecutar echo $memo te debería devolver el valor correcto. Repito, no te equivoques con el punto,

. /ruta_al_script/mi_script

no es lo mismo que

./ruta_al_script/mi_script

Por supuesto cuando cierres esa shell también desaparecerán las variables.


Lectura obligada:
+1
0
-1

Fdo. Forense asesino, Censor fundamentalista, Fustigador de novatos y Patético maleducado

Imagen de manu.ramon
+1
0
-1

Muchas gracias José Luis, muy buena la explicación (te lo has currado).

Ahora me funciona perfectamente.

Un saludo

+1
0
-1