Pages : 1
#1 Le 18/12/2007, à 21:34
- 3psyl0n
Script shell de base
Bon, j'ai pleinement conscience que ce n'est pas spécialement une question sur unbuntu, mais comme la communauté et grande et soit disant cool, je pense que j'aurai ma réponse rapidement ici ^^
Voila, c'est tout simple, mais vu que je n'y connait rien en shell gnu/linux ...
Je cherche a faire ceci :
#!/bin/bash
export A=$1
export B=$2
export C=$3
Dans un script shell. Le pb est que les variables global ne sont pas enregistré lorsque que le "export" est executé dans un script, alors que cela marche bien sur l'invite de commande.
1 - Pourquoi, que dois je changer ?
2 - Sauriez vous comment (toujours en shell) faire quelque chose comme
echo quel est votre prénom ?
$var = ???prenom_recuperer_du_prompt???
<- le truc en gras la, je ne vois pas comment le faire ^^
Dernière question, Si je fait un "export A=coucou", j'ai bien "coucou" dans mes variables globales, mais si je demarre un autre terminal, cette variable global n'existe pas pour ce nouveau terminal
3 - Comment faire pour que celle-ci soit commune a tous les terminaux ?
Encore merci bcp d'avance
3psyl0n
Dernière modification par 3psyl0n (Le 18/12/2007, à 21:36)
Hors ligne
#2 Le 18/12/2007, à 21:49
- lawl
Re : Script shell de base
Commencons par la fin :
mettre les exports dans .bashrc
et voila comment récuperer ce que tu veux
echo "quel est votre prénom ?"
read prenom
echo "Bonjour $prenom"
Quand à export quand tu dit qu'il ne sont pas enregistrer peut tu etre plus precis ?
Car un export ne crée une variable que pour le "contexte" des que l"on en sort les variables disparaisent.
Dernière modification par lawl (Le 18/12/2007, à 21:50)
Hors ligne
#3 Le 01/01/2008, à 20:34
- 3psyl0n
Re : Script shell de base
2 - Sauriez vous comment (toujours en shell) faire quelque chose comme
>Résolu
Je n'ai pas vérifier, mais je pense que c'est ce que je cherchais
mettre les exports dans .bashrc
^^, cad ?
Quand à export quand tu dit qu'il ne sont pas enregistrer peut tu etre plus precis ?
En fait, lorsque je fais cela sur la ligne de commande :
>export A=coucou
>echo $A
J'obtiens :
>coucou
Mais si je fais cela :
>test.sh coucou
>echo $A
J'obtiens :
- Rien -
Ps :
test.sh
#!/bin/bash
export A=$1
export B=$2
export C=$3
Hors ligne
#4 Le 01/01/2008, à 21:26
- lawl
Re : Script shell de base
^^, cad ?
Dans le fichier .bashrc
Pour le reste c'est normal un export n'est valable que dans son processus.
Hors ligne
#5 Le 10/01/2008, à 05:41
- 3psyl0n
Re : Script shell de base
Pour le reste c'est normal un export n'est valable que dans son processus.
Ce que je veux faire et donc impossible a faire en shell ?
Hors ligne
#6 Le 10/01/2008, à 13:34
- lawl
Re : Script shell de base
Mais que veux tu faire ?
Hors ligne
#7 Le 10/01/2008, à 13:44
- wilco
Re : Script shell de base
2 - Sauriez vous comment (toujours en shell) faire quelque chose comme
>Résolu
Je n'ai pas vérifier, mais je pense que c'est ce que je cherchaismettre les exports dans .bashrc
^^, cad ?
Quand à export quand tu dit qu'il ne sont pas enregistrer peut tu etre plus precis ?
En fait, lorsque je fais cela sur la ligne de commande :
>export A=coucou
>echo $AJ'obtiens :
>coucouMais si je fais cela :
>test.sh coucou
>echo $AJ'obtiens :
- Rien -Ps :
test.sh#!/bin/bash export A=$1 export B=$2 export C=$3
Bonjour,
Tu n'auras la réponse à ton export qu'à l'intérieur de ton shell.
Si tu fais un shell test.sh
#!/bin/bash
export A=$1
export B=$2
export C=$3
echo $A $B $C
puis que tu lances :
>test.sh coucou hello test
tu auras comme réponse
>coucou hello test
Intel Core i3-2125, 3,3 GHz / Carte mère : ASUS P8H67-M PRO / 2x 4 Go Mem / Boitier Antec Sonata III 500/ 500 Go (system /Home séparé /Swap) / 1 To / 1 graveur DVD IDE / Ecran 22" / All in one Hp Envy 5540
Hors ligne
#8 Le 10/01/2008, à 14:01
- cduray
Re : Script shell de base
Pour faire ce que tu veux (définir des variables dans un script et les utiliser *après* l'exécution de celui-ci), tu dois "sourcer" le script, et pas l'exécuter.
Petit exemple: soit le script test.sh suivant
echo "test.sh - en cours d'exécution"
export ma_variable=1234
echo "Ma variable vaut, dans le script: $ma_variable"
ensuite, depuis le shell, essaye ce qui suit:
./test.sh
echo "hors du script: $ma_variable"
# --> l'exécution du script fonctionne, mais $ma_variable est indéfini à l'extérieur du script
#
# la ligne suivante "source" le script, i.e. passe les commandes au shell courant plutot que d'ouvrir un sous-shell:
. ./test.sh
echo "hors du script: $ma_variable"
Bon amusement
C
Dernière modification par cduray (Le 10/01/2008, à 14:03)
Hors ligne
Pages : 1