Problema con variable de entorno

Imagen de gaston_mdq
0 puntos

Hola amigos lixuneros... com les va?? Escribo para ascarme un duda... hice un variable de entorno qeu se llama Hola="Hola Mundo" y con el comando echo la he guardado en un archivo txt llamado imprime... pero yo quiero ejecutar el comando sh imprime y y me tira un erro como que no lo encutra qeu puede ser???

desde ya gracias de antemano!!! 

Imagen de joseluis
+1
0
-1

Exactamente ¿qué es lo que has hecho?, ¿algo parecido a:?

Hola="hola mundo"
echo $Hola > imprime
sh imprime

Si fuera eso te estaría dando, lógicamente, un error porque no encuentra el comando hola ya que el contenido del fichero imprime es hola mundo.

Si es otra cosa lo que has hecho ponlo por aquí para hacernos una idea de donde puede estar el problema.


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

+1
0
-1

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

Imagen de gaston_mdq
+1
0
-1

joseluis gracas por responder... lo que escribi fue lo siguiente:

HOLA="Hola Mundo" 
echo "$HOLA"> imprime
sh imprime 

y como seria entonces para que el comando sh ande correctamente?? desde ya muchas gracias!!!

+1
0
-1
Imagen de slap
+1
0
-1

Supongo que lo que quieres que haga imprime es que te saque por pantalla:

Hola Mundo

Si es así, lo que tienes que enviar al archivo imprime es la orden completa:

echo Hola Mundo

Para eso, tendrías que cambiar la línea:

echo "$HOLA"> imprime

por:

echo "echo $HOLA"> imprime

ok?
Saludos.

+1
0
-1

Saludos.

0000 start out (+FD),A
           ld  BC, +7FFF
           jp 03CB, RAM-CHECK

http://www.injiniero.es

Imagen de gaston_mdq
+1
0
-1

slap gracias por la ayuda pero cuadno hago eso en el archivo imprime me aparece echo $HOLA y no el valor de la variabel de entorno HOLA que es Hola Mundo .... no se como se hara...mi problema es con el comando sh no lo peudo ejecutar...

el tema es el sigueinte
: Lo que tengo q hacer es crear una variabeld e entorno Hola que contenga "Hola Mundo" y debo ejecuatr echo $HOLA... cuando ejecuto echo $HOLA anda todo perfecto y cuando lo pongo en el archivo impriem tb anda barbaro... el tema es que me dice que ejecute sh imprime y que me tendira ue dar lo mismo pero no me da lo mismo em da error:

echo "$HOLA">imprime
$ sh imprime
imprime: 1: Hola: not found
y ahi esta el problema....

desde ya muchas gracias a todos!!! 

+1
0
-1
Imagen de joseluis
+1
0
-1

Tienes que exportar la variable HOLA para que el script la vea.

HOLA="hola mundo"
export HOLA
echo $HOLA
echo 'echo "$HOLA"' > imprime
sh imprime

y el resultado que tiene que darte es dos veces hola mundo (una del echo y otra del sh imprime).

Edito: Me faltaba poner el export en el código.

Edito otra vez: Si ves el contenido del fichero imprime (por ejemplo con un cat imprime) debería tener lo siguiente:

echo "$HOLA"

que al ejecutar mostraría el valor de la variable HOLA si esta existe y se ha exportado.


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

+1
0
-1

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

Imagen de gaston_mdq
+1
0
-1

JOYAA!! dice esooo cuando hago el cat imprime!!! Y anda el el comando sh imprime!!! Idolo joseluis!!! graciass... otra pregunta por q exportamos la variable ??? para que sirvio donde la guardo?? osea por q decidiste exportarla??

gacias de nuebvo joseluis!!!

+1
0
-1
Imagen de joseluis
+1
0
-1

Cuando asignas un valor a una variable, esa variable existe únicamente en la shell donde le has dado valor. Con el export lo que se hace es que esa variable pueda ser usada también en los procesos hijos de esa shell.

Por ejemplo, cuando abres un terminal se lanza una shell (normalmente suele ser bash) que es donde realmente se ejecutan los comandos. Si en ese terminal te creas esa variable se almacena en el espacio de memoria que tiene asignado el shell. Si desde ese shell lanzas un script (o lo ejecutas con sh) lo que ocurre es que se abre una segunda shell hija de la primera que tiene su propio espacio de memoria con sus propias variables, por eso las variables que has definido en la primera shell no las tienes disponibles en la segunda. Con el export lo que haces es decir que cuando se creen shell hijas se haga una copia de las variables que exportas en la shell hija (realmente es una copia como puedes comprobar si modificas en la segunda shell el valor de la variable que exportas y cuando vuelves a la primera shell ves que la variable mantiene el valor que tenía antes de ser modificado).

Pequeño ejemplo (obviamente desde un terminal):

VAR1="Variable uno"
VAR2="Variable dos"
echo "Var1=$VAR1"
echo "Var2=$VAR2"
echo "Abrimos una shell hija"
bash
echo "Var1=$VAR1"
echo "Var2=$VAR2"
echo "Salimos de la shell hija"
exit
export VAR2
echo "Abrimos una shell hija"
bash
echo "Var1=$VAR1"
echo "Var2=$VAR2"
VAR2="Variable dos modificada en la shell hija"
echo "Var2=$VAR2"
echo "Salimos de la shell hija"
exit
echo "Var2=$VAR2"

Y te debe dar el siguiente resultado:

Var1=Variable uno
Var2=Variable dos
Abrimos una shell hija
Var1=
Var2=
Salimos de la shell hija
Abrimos una shell hija
Var1=
Var2=Variable dos
Var2=Variable dos modificada en la shell hija
Salimos de la shell hija
Var2=Variable dos

Si quisieras que en una shell hija (por ejemplo un script) se modificara el valor de una variable exportada y la shell padre viera esa modificación, tendrías que ejecutar el script de una forma un poco especial (con un punto por delante y separado del script por espacios - . /ruta/al/script/miscript por supuesto en este caso el script debe tener permisos de ejecución).

Por ejemplo, supongamos que te creas en el directorio personal del usuario gaston (/home/gaston) un script con el siguiente contenido:

#!/bin/bash
echo "$HOLA - (script imprime)"
HOLA="ondum aloh"
echo "$HOLA - (script imprime)"

Damos permisos de ejecución al script:

chmod 700 /home/gaston/imprime

y desde una terminal hacemos lo siguiente:

HOLA="hola mundo"
echo $HOLA
export HOLA
/home/gaston/imprime
echo $HOLA
. /home/gaston/imprime
echo $HOLA

Nos debe salir el siguiente resultado:

hola mundo
hola mundo - (script imprime)
ondum aloh - (script imprime)
hola mundo
hola mundo - (script imprime)
ondum aloh - (script imprime)
ondum aloh

Es decir con la segunda ejecución (la del punto) hemos conseguido que el script modifique la variable y que la shell padre vea la modificación.


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

+1
0
-1

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

Imagen de joseluis
+1
0
-1

Aunque tarde, creo que este hilo encaja mejor en el foro de La línea de comandos.
Movido desde Ayuda para principiantes


Equipo de Ubuntu-es
+1
0
-1

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

Imagen de gaston_mdq
+1
0
-1

Muchas gracias jose luis la verdad fue una muy buena explciacion muchas gracais en seriooo!!!!!

+1
0
-1