J'utilise PHP CLI via bash shell. Veuillez vérifier Manipulating an array (printed by php-cli) in shell script pour plus de détails.Initialisation de variables dynamiques (variables variables) dans le script shell bash
Dans le code de shell suivant, je suis capable de faire écho les paires key
- value
que je reçois du script PHP.
IFS=":"
# parse php script output by read command
php $PWD'/test.php' | while read -r key val; do
echo $key":"$val
done
Voici le résultat de cette -
BASE_PATH:/path/to/project/root
db_host:localhost
db_name:database
db_user:root
db_pass:root
Maintenant, je veux juste lancer des variables dynamiques dans la boucle while pour que je puisse les utiliser comme $BASE_PATH
ayant une valeur '/path/to/project/root'
, $db_host
ayant 'localhost'
Je viens d'un arrière-plan PHP. Je voudrais quelque chose comme $$key = $val
de PHP
@Martin merci, cela fonctionne mais il existe un problème de portée variable en dehors de la boucle while. Je suis capable d'écho la variable juste après la ligne eval dans ma boucle, mais pas en dehors du mot-clé 'done' de la boucle' while' –
Vous avez raison, c'est parce que la construction de lecture crée un sous-shell. Ensuite, les variables internes ne seront pas visibles en dehors de la boucle. Je vais mettre à jour la réponse avec une solution alternative ... –
Désolé, cela ne fonctionne pas comme ça. Si je sépare la commande 'while' de la commande' php' (comme vous l'avez fait au lieu de 'php $ PWD '/ test.php' | alors que vous lisez la commande -r, val; do'), la boucle while ne s'exécute qu'une fois et' $ key' et '$ val' sont vides. –