En fait, non, pas que.
Bonjour à tous,
Voici ce que je constate en test :
Prérequis :
- fichier qui contient toutes mes variables utiles*: ~/.varUtiles.vps
- Contenu dans ~/.bashrc :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 # ~/.varUtiles.vps: contient toutes les variables que l'on rencontre dans Mes scripts. # N° IP du VPS : VPSNoIP=5555555555555555555555555555555555555555555555
- Mon script : ./script.sh :
Code : Sélectionner tout - Visualiser dans une fenêtre à part source ~/.varUtiles.vps
Exécution:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 echo "***** SAISIR ADRESSE IP du VPS *****" read varVPSNoIP sed -i "/VPSNoIP=/c VPSNoIP=$varVPSNoIP" ~/.varUtiles.vps source ~/.varUtiles.vps echo $VPSNoIP
donne
Code : Sélectionner tout - Visualiser dans une fenêtre à part ./script.sh
Donc ma variable s'affiche SEULEMENT si j'ai bien sourcer ~/.varUtiles.vps dans mon script.sh
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ***** SAISIR ADRESSE IP du VPS ***** 77777777777777777777 77777777777777777777
Par contre, hors script, dans le terminal,
donne
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo $VPSNoIP
càd l'ancienne valeur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 3333
Pour voir la nouvelle valeur de ma variable dans le terminal, je dois sois fermer/réouvrir le terminal,
soit faire:
Comme cela je peux transférer mon fichier de var vers le VPS pour y être exploiter.
Code : Sélectionner tout - Visualiser dans une fenêtre à part source ~/.varUtiles.vps
C'est bien comme cela qu'il faut faire donc, c'est la manière la plus propre ?
Tu ne vois pas de bizarerie ?
Bonjour
- Déjà, tu as fait disparaître le mot export. Ce qui fait que ton affectation est très locale à ton script, que ce soit le fichier sourcé, ou le ~/.bashrc, ou autre.
- Ensuite, tu as encore oublié de protéger la variable par des guillemets, ce qui mettra ton script en vrac si l'utilisateur tape une espace.
Code : Sélectionner tout - Visualiser dans une fenêtre à part sed -i "/\<VPSNoIP\>=/c VPSNoIP=\"$varVPSNoIP\""- Enfin sourcer tout ton fichier de valeurs au prétexte qu'une seule valeur a changé n'a aucun sens puisque tu es dans le script dans lequel la nouvelle valeur est apparue. (ligne 4 de ton code)
Bonjour à tous,
@Flodelarab
J'ai rajouté l'export et les \".
Par contre, pourquoi as-tu rajouté \< et \> ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part sed -i "/\<export VPSNoIP\>=/c export VPSNoIP=\"$varVPSNoIP\"" /home/toto/.varUtiles.vps
Et aussi pourquoi dis-tu que ca n'a pas de sens de faire le source ?
Car si je ne le mets pas, l'echo ne renvoie pas l'adresse saisie mais l'ancienne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 echo "***** SAISIR ADRESSE IP du VPS *****" read varVPSNoIP sed -i "/\<export VPSNoIP\>=/c export VPSNoIP=\"$varVPSNoIP\"" /home/toto/.varUtiles.vps source /home/toto/.varUtiles.vps echo $VPSNoIP
Ça veut dire debut-de-mot et fin-de-mot. Quand je vois que tu es capable d'appeler des variables varVPSNoIP alors qu'il existent des variables VPSNoIP, je pense qu'il est nécessaire de se protéger des quiproquos en signifiant que VPSNoIP est le mot entier. Sinon, ton fichier de valeurs pourrait être défiguré, automatiquement.Par contre, pourquoi as-tu rajouté \< et \> ?
Et oui. Y a pas de miracle. Si tu n'affectes pas, ça n'affecte pas.Car si je ne le mets pas, l'echo ne renvoie pas l'adresse saisie mais l'ancienne.
Au lieu de "source".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 echo "***** SAISIR ADRESSE IP du VPS *****" read varVPSNoIP sed -i "/export VPSNoIP\>=/c export VPSNoIP=\"$varVPSNoIP\"" /home/toto/.varUtiles.vps export VPSNoIP="$varVPSNoIP" echo $VPSNoIP
Génial, parfait, merci ;-)
Par contre, pour corriger, c'est bien
à mettre dans le script, et non pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part \<VPSNoIP\>
Code : Sélectionner tout - Visualiser dans une fenêtre à part \<export VPSNoIP\>
Partager