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
Prova
export myPath=/home/user/dir
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.
Se hai bisogno di usarlo all'interno di un'altra stringa tra virgolette, puoi anche fare eco "Path is $ {myPath}" –
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
è 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.
usa var di esportazione anche nel tuo profilo di bash - se vuoi che gli script accedano a queste variabili. per esempio JAVA_HOME – LukeSolar
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
@ 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). –