Je veux utiliser des variables définies dans mais .yml code> dans un script shell. La variable de YAML est sous forme de
variable: valeur code>. Dans un script, j'essaie:
echo code> ne renvoie rien. Est-ce un moyen d'obtenir un tel type d'opération dans un script shell? P> p>
3 Réponses :
Source la sortie de votre commande E. g. sortie: p>
eval `sed 's/\s*:\s*/=/' *vars.yml*` echo $variable
Merci! C'est exactement ce qui manquait aussi loin eval code> exécutera des chaînes éditées, créant ainsi une variables.
Voulez-vous s'il vous plaît essayer ce qui suit: sortie: < / p> [explication] strong> p> fichier.yml code>: p>
pendant code> en boucle avec
lisez code> lit le fichier d'entrée
fichier.yml code> ligne par ligne
Affectation de la variable
ligne code> à chaque enregistrement. li>
deconpar var = valeur code> crée une variable nommée
var code> puis
l'attribue à
valeur code>. La commande
déclarer code> accepte non seulement le littéral
affectation, mais une expression qui est évaluée comme une affectation.
Dans ce cas, la commande
sed code> convertit la ligne
var1: valeur1 code> dans
var1 = value1 code> puis le
déclarer code> exécute l'affectation. li>
eval code> sauf si em> 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 ~ / code> dans le fichier et il est
eval code> ed sans le savoir.
En utilisant
déclarer code> est censé être moins risqué que
eval code>. Li>
ul> p>
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.
Ajoutez votre fichier .yml et votre sortie souhaitée pour cette entrée d'échantillon à votre question (pas de commentaire).
sed code> ne fonctionne pas le résultat de la substitution.
Vous n'abandonnez pas la sortie du SED à la variable $ non plus