2009-05-02 14 views
9

En la línea de comando bash, configuré una variable myPath =/home/user/dir. Creé un script en el que puse echo $ myPath pero parece que no funciona. No hace eco de nada. ¿Qué puedo hacer para acceder a la variable myPath en el script? Si escribo echo $ myPath en el comando, funciona, pero no en el script.Acceda a una variable en un script bash

Respuesta

8

Trate

export myPath=/home/user/dir 
+1

use export var también en su perfil bash - si desea que sus scripts accedan a esta variable. por ejemplo JAVA_HOME – LukeSolar

+0

Esto es engañoso. La 'exportación' no tiene un efecto visible en el shell actual. Es útil cuando el valor de la variable debe hacerse visible para los subprocesos iniciados desde el shell actual. – tripleee

+0

@tripleee De hecho, y a menos que me falta algo, eso es exactamente lo que hace la pregunta: cómo acceder a una variable desde un subproceso (que está ejecutando un script de shell). –

18

¿cómo se asigna la variable? que debería haber sido:

$ export myPath="/home/user/dir" 

continuación, dentro de un programa de shell como:

#!/usr/bin/env bash 
echo $myPath 

obtendrá los resultados deseados.

+1

Si necesita usar esto dentro de otra cadena entrecomillada, también puede hacer eco "La ruta es $ {myPath}" –

5

También puede hacer esto para establecer la variable myPath sólo para miscript

myPath="whatever" ./myscript 

Para más detalles sobre la sintaxis complicada admitido para las variables de entorno ver: http://www.pixelbeat.org/docs/env.html

1

debe declarar su asignación variable " exportar "como tal:

export myPath="/home/user/dir" 

Esto hará que el shell incluya la variable en el enviro nmento de subprocesos que lanza. De forma predeterminada, las variables que declara (sin "exportar") no se pasan a un subproceso. Es por eso que inicialmente no obtuviste el resultado esperado.

Cuestiones relacionadas