Salve,
devo creare un semplicissimo script di shell che prende in input due parametri, ossia "name" e "value", e setta a "value" il valore della variabile di ambiente di nome "name". Potreste aiutarmi?
Grazie
Salve,
devo creare un semplicissimo script di shell che prende in input due parametri, ossia "name" e "value", e setta a "value" il valore della variabile di ambiente di nome "name". Potreste aiutarmi?
Grazie
Gli uomini, non avendo potuto guarire la morte, la miseria, l'ignoranza, hanno risolto, per vivere felici, di non pensarci.
Grazie per il supporto sacarde...purtroppo ho ancora qualche problemaOriginariamente inviato da sacarde
http://www.gentoo.org/doc/it/article...example-p1.xml
esempi:
http://www.pierotofy.it/pages/sorgenti/Bash/
1)
Se dal terminale faccio:
e poi mi creo il seguente script:codice:var=nuovavariabile export var
l'output dello script è correttamente nuovavariabile, mentre se successivamente creo lo scriptcodice:#!/bin/sh echo $var
e poi dal terminale facciocodice:#!/bin/sh unset var var=nuovavariabile export var
l'output è vuoto. Come mai export fatto nello script non funziona?codice:echo $var
2)
Ho creato lo script per risolvere il problema iniziale (con il quale ho aperto la nuova discussione) nel seguente modo:
dopodiché faccio chmod 700 semplice.sh, e quando dal terminale eseguo ./semplice.sh PWD nuovapwd per assegnare alla variabile PWD il valore nuovapwd mi viene restituitocodice:#!/bin/sh $1=$2 export $1
codice:./semplice.sh: 2: PWD=nuovapwd: not found
Gli uomini, non avendo potuto guarire la morte, la miseria, l'ignoranza, hanno risolto, per vivere felici, di non pensarci.
non credo tu possa farlo: puoi (ri)definire una variabileOriginariamente inviato da inc40
Salve,
devo creare un semplicissimo script di shell che prende in input due parametri, ossia "name" e "value", e setta a "value" il valore della variabile di ambiente di nome "name". Potreste aiutarmi?
Grazie
in uno script, ma sarà sempre una (ridefinizione di) variabile
*locale*, in quanto eseguita in una sub-shell...il valore originario
sarà recuperato al termine dello script
comunque, se anche si potesse, ti consiglierei di non farlo: chi vuole modificare
il valore di una variabile d'ambiente (e quindi generalmente visibile da tutti i
programmi avviati nella (sub-)shell in questione) è bene che lo faccia esplicitamente,
nel modo canonico
Magari potessi non farlo...purtroppo è un "esercizio" che devo fare per forzaOriginariamente inviato da U-bahn
...
comunque, se anche si potesse, ti consiglierei di non farlo:
...
Gli uomini, non avendo potuto guarire la morte, la miseria, l'ignoranza, hanno risolto, per vivere felici, di non pensarci.
Semplifico il problema...voglio creare uno script che prende in input due parametri, "variabile" e "valore" ed effettua l'assegnamento variabile=valore.Originariamente inviato da inc40
Salve,
devo creare un semplicissimo script di shell che prende in input due parametri, ossia "name" e "value", e setta a "value" il valore della variabile di ambiente di nome "name". Potreste aiutarmi?
Grazie
Il contenuto del mio script è un semplicissimo
ma quando lo eseguo chiamandocodice:$1=$2
mi viene restituitocodice:mioscript miavariabile miovalore
Qual è il problema?codice:miavariabile=miovalore: not found
Gli uomini, non avendo potuto guarire la morte, la miseria, l'ignoranza, hanno risolto, per vivere felici, di non pensarci.
nome_variabile_seza_dollaro=$2
Se esegui lo script normalmente come ha già detto U-bahn, viene eseguito in una subshell. Export funziona da shell padre a shell figlio, e NON vice versa. Per questo, uno script eseguito in una certa shell non potrà mai modificarene le variabili.
Prova ad utilizzare il comando source (o semplicemente "."): anzichè eseguire lo script in una subshell lo esegue nell'ambiente chiamante: in questo modo lo script può modificare ogni variabile della shell che lo richiama, visto che eseguito da lei stessa e non da una subshell.
GreyFox (Linux registered user #435102)
greyfox.imente.org - GreyFox's shots (photo gallery)
$ cd /pub
$ more beer
Grazie per il tuo supporto GreyFox86...purtroppo non conosco i comandi source e "." Ho provato a dare un man source ma mi dice che non c'è nessuna entry corrispondente (come mai?)Originariamente inviato da GreyFox86
Se esegui lo script normalmente come ha già detto U-bahn, viene eseguito in una subshell. Export funziona da shell padre a shell figlio, e NON vice versa. Per questo, uno script eseguito in una certa shell non potrà mai modificarene le variabili.
Prova ad utilizzare il comando source (o semplicemente "."): anzichè eseguire lo script in una subshell lo esegue nell'ambiente chiamante: in questo modo lo script può modificare ogni variabile della shell che lo richiama, visto che eseguito da lei stessa e non da una subshell.
Potresti indicarmi come utilizzare tali comandi?
Grazie
Gli uomini, non avendo potuto guarire la morte, la miseria, l'ignoranza, hanno risolto, per vivere felici, di non pensarci.
è facile, semplicemente source script.sh [arogomenti]
"." è esattamente la stessa cosa di source.
GreyFox (Linux registered user #435102)
greyfox.imente.org - GreyFox's shots (photo gallery)
$ cd /pub
$ more beer