0
votes

Initialiser les variables sur la mouche transformée par SED

Je veux utiliser des variables définies dans .yml dans un script shell. La variable de YAML est sous forme de variable: valeur . Dans un script, j'essaie: xxx

mais echo ne renvoie rien. Est-ce un moyen d'obtenir un tel type d'opération dans un script shell?


3 commentaires

Ajoutez votre fichier .yml et votre sortie souhaitée pour cette entrée d'échantillon à votre question (pas de commentaire).


sed ne fonctionne pas le résultat de la substitution.


Vous n'abandonnez pas la sortie du SED à la variable $ non plus


3 Réponses :


0
votes

Source la sortie de votre commande E. g. xxx

sortie: xxx


0 commentaires

1
votes
eval `sed 's/\s*:\s*/=/' *vars.yml*`
echo $variable

1 commentaires

Merci! C'est exactement ce qui manquait aussi loin eval exécutera des chaînes éditées, créant ainsi une variables.



0
votes

Voulez-vous s'il vous plaît essayer ce qui suit: xxx

fichier.yml : xxx

sortie: < / p> xxx

[explication]

  • le pendant en boucle avec lisez lit le fichier d'entrée fichier.yml ligne par ligne Affectation de la variable ligne à chaque enregistrement.
  • la syntaxe deconpar var = valeur crée une variable nommée var puis l'attribue à valeur . La commande déclarer accepte non seulement le littéral affectation, mais une expression qui est évaluée comme une affectation. Dans ce cas, la commande sed convertit la ligne var1: valeur1 dans var1 = value1 puis le déclarer exécute l'affectation.
  • en général, il est pas recommandé d'utiliser eval sauf si vous avez une et contrôle exclusif sur le fichier d'entrée en raison d'un risque de sécurité potentiel. Imaginez que quelque chose mal ajoute une ligne rm -rf ~ / dans le fichier et il est eval ed sans le savoir. En utilisant déclarer est censé être moins risqué que eval .

2 commentaires

J'ai bien peur qu'il soit très difficile de comprendre sans commentaires au code


@ l00p merci pour les commentaires. J'ai ajouté une explication dans ma réponse. J'espère que cela aide.