Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 wink

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

3psyl0n a écrit :

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

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