2009-05-02 8 views
9

Nella riga di comando di bash, ho impostato una variabile myPath =/home/user/dir. Ho creato uno script in cui ho inserito echo $ myPath ma non sembra funzionare. Non riecheggia nulla. Cosa posso fare per accedere alla variabile myPath nello script. Se scrivo echo $ myPath nel comando, funziona, ma non nello script.Accesso a una variabile in uno script bash

risposta

8

Prova

export myPath=/home/user/dir 
+1

usa var di esportazione anche nel tuo profilo di bash - se vuoi che gli script accedano a queste variabili. per esempio JAVA_HOME – LukeSolar

+0

Questo è fuorviante. L'esportazione non ha effetti visibili sulla shell corrente. È utile quando il valore della variabile deve essere reso visibile ai sottoprocessi avviati dalla shell corrente. – tripleee

+0

@ triple In effetti, ea meno che manchi qualcosa, questo è esattamente ciò che la domanda si pone: come accedere a una variabile da un sottoprocesso (che sta eseguendo uno script di shell). –

18

come hai fatto a assegnare la variabile? avrebbe dovuto essere:

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

poi all'interno di un programma di shell come:

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

otterrai i risultati desiderati.

+1

Se hai bisogno di usarlo all'interno di un'altra stringa tra virgolette, puoi anche fare eco "Path is $ {myPath}" –

5

Si potrebbe anche fare questo per impostare la variabile myPath solo per MyScript

myPath="whatever" ./myscript 

Per i dettagli della sintassi difficile ammesso per le variabili di ambiente Vedi: http://www.pixelbeat.org/docs/env.html

1

è necessario dichiarare la vostra assegnazione variabile " export "come tale:

export myPath="/home/user/dir" 

Ciò farà sì che la shell includa la variabile nell'ambiente di sottoprocessi avviati. Per impostazione predefinita, le variabili dichiarate (senza "esportazione") non vengono passate a un sottoprocesso. Questo è il motivo per cui inizialmente non hai ottenuto il risultato che ti aspettavi.