#1 Le 19/01/2016, à 11:17
- supras85
Shell Linux - Récupération d'une variable situé dans un autres fichier
Bonjour,
Comme indiqué dans le titre, je souhaiterais récupérer la variable stocké dans un autres fichier.
Exemple :
Dans mon 1er script j'ai la variable définis $host correspondant à une adresse IP :
La variable est à la ligne 4 : host="http://192........"
Dans mon 2ème script je cherche à récupérer le contenu de cette variable, et donc récupérer ce qu'elle contient (donc l'adresse IP)
j'ai beau chercher je n'arrive pas, je bloque...
Toute les solutions que je trouve, je n'arrive pas à les adapter/faire fonctionner.
Par ex voici ce que je voudrais faire (afficher le contenu de la variable) :
echo "MaVariable" $(grep "host" /MonChemin/script.sh)
Mais cela m'affiche toute les lignes avec le mot "host" dedans, alors que je souhaite juste récupérer le contenu définis à la ligne 4.
Merci d'avance.
Hors ligne
#2 Le 19/01/2016, à 11:24
- Watael
Re : Shell Linux - Récupération d'une variable situé dans un autres fichier
salut,
tu pourrais faire un troisième fichier, qui contiendrait les variables communes, que tu sourcerais dans chaque script.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 19/01/2016, à 11:24
- pingouinux
Re : Shell Linux - Récupération d'une variable situé dans un autres fichier
Bonjour,
Pour récupérer la 4ème ligne
sed -n '4p' script.sh
Pour récupérer le contenu de la variable
sed -n '4s/host=//p' script.sh
Hors ligne
#4 Le 19/01/2016, à 11:41
- supras85
Re : Shell Linux - Récupération d'une variable situé dans un autres fichier
Bonjour,
Pour récupérer la 4ème lignesed -n '4p' script.sh
Pour récupérer le contenu de la variable
sed -n '4s/host=//p' script.sh
Ok super sa marche nickel !
Merci à tous pour vos réponses rapides.
En vous souhaitant une bonne journée.
Cordialement.
Hors ligne
#5 Le 26/01/2016, à 11:23
- supras85
Re : Shell Linux - Récupération d'une variable situé dans un autres fichier
Bonjour, je remonte ce sujet pour éviter d'en ouvrir un autre.
A la suite de la commande que pingouinux m'a donné :
sed -n '4s/host=//p' script.sh
Le contenu de la variable est récupéré, mais lorsque celle-ci est entre guillemets/quotes, le contenus sous forme "contenus" est récupérer, avec donc les guillemets/quotes.
.
Est-ce qu'il y aurais un moyen pour récupérer une variable, mais quand cette fois-ci elle est déclarer entre guillemets/quote, la récupérer sans les guillemets/quotes ? Récup' sa valeur directement, sans avoir les "." ou '.' avec.
Amicalement.
Hors ligne
#6 Le 26/01/2016, à 11:31
- Watael
Re : Shell Linux - Récupération d'une variable situé dans un autres fichier
as-tu déjà entendu parlé de la commande bash source, et son équivalent POSIX . ?
Dernière modification par Watael (Le 26/01/2016, à 11:32)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#7 Le 26/01/2016, à 11:37
- pingouinux
Re : Shell Linux - Récupération d'une variable situé dans un autres fichier
sed -rn "4s/host=['\"]?([^'\"]*)['\"]?$/\1/p" script.sh
Hors ligne
#8 Le 26/01/2016, à 11:41
- supras85
Re : Shell Linux - Récupération d'une variable situé dans un autres fichier
as-tu déjà entendu parlé de la commande bash source, et son équivalent POSIX . ?
Non, jamais entendu parler ! Certainement par la suite
sed -rn "4s/host=['\"]?([^'\"]*)['\"]?$/\1/p" script.sh
Alors la...super. Rapide, efficace, merci beaucoup pingouinux...
Bonne journée à vous.
Hors ligne
#9 Le 26/01/2016, à 11:50
- supras85
Re : Shell Linux - Récupération d'une variable situé dans un autres fichier
D'ailleurs dernière petite question au passage (désolé du DP) :
Pour un fichier bash c'est bon, mais pour un fichier .php non. Que faut-il changer ? Il retourne une ligne vide.
Hors ligne
#10 Le 26/01/2016, à 11:55
- pingouinux
Re : Shell Linux - Récupération d'une variable situé dans un autres fichier
Il faudrait voir précisément ce que contient ce fichier.
Hors ligne
#11 Le 26/01/2016, à 11:57
- supras85
Re : Shell Linux - Récupération d'une variable situé dans un autres fichier
Après vérification c'est le ; à la fin de la déclaration de la variable en PHP qui gêne. Sur un .sh le point virgule n'est pas obligatoire contrairement en PHP....
Il faudrais, je pense, éliminer le ; tout comme sa a été fait avec les quotes lors de l'affichage du résultat...
EDIT :
Son contenu
<?php
#définition des variables
$DBUSER='MonUser';
...
?>
Dernière modification par supras85 (Le 26/01/2016, à 12:06)
Hors ligne
#12 Le 26/01/2016, à 12:04
- Watael
Re : Shell Linux - Récupération d'une variable situé dans un autres fichier
Je reste sur ma position, considérant ma proposition au message #2, plus appropriée, que ce soit avec source (ou .) en shell, ou "include" en php
Dernière modification par Watael (Le 26/01/2016, à 12:04)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#13 Le 26/01/2016, à 12:04
- pingouinux
Re : Shell Linux - Récupération d'une variable situé dans un autres fichier
sed -rn "4s/host=['\"]?([^'\";]*)['\"]?;?$/\1/p" fichier
Hors ligne
#14 Le 26/01/2016, à 12:15
- supras85
Re : Shell Linux - Récupération d'une variable situé dans un autres fichier
sed -rn "4s/host=['\"]?([^'\";]*)['\"]?;?$/\1/p" fichier
Il semblerais que cela ne marche pour PHP. J'ai toujours une ligne vide lors de l'affichage.
J'ai éditer un peu plus haut et donner un exemple de la variable que je voulais récupérer dans un .php
Son contenu
<?php
#définition des variables
$DBUSER='MonUser';
...
?>
Hors ligne
#15 Le 26/01/2016, à 12:28
- pingouinux
Re : Shell Linux - Récupération d'une variable situé dans un autres fichier
Il faut que tu donnes un minimum d'information…
sed -rn "s/.*\<DBUSER=['\"]?([^'\";]*).*/\1/p" fichier
Hors ligne
#16 Le 26/01/2016, à 20:01
- supras85
Re : Shell Linux - Récupération d'une variable situé dans un autres fichier
Ok super merci encore...
Hors ligne
#17 Le 29/01/2016, à 20:09
- HP
Re : Shell Linux - Récupération d'une variable situé dans un autres fichier
<?php
$DBUSER='MonUser';
$DBPASS='#&@abc456';
if (basename(__FILE__) == basename($_SERVER['SCRIPT_FILENAME'])) {
call_user_func_array(function($vars) {
foreach(['DBUSER', 'DBPASS'] as $k) {
printf('export %s=%s%s', $k, $vars[$k], PHP_EOL);
}
}, [get_defined_vars()]);
}
# php config.php
export DBUSER=MonUser
export DBPASS=#&@abc456
Dernière modification par HP (Le 29/01/2016, à 20:14)
cat /dev/urandom >/dev/null 2>&1 #github
Hors ligne