Je reçois en dessous de la sortie après avoir exécuté un script, que je stocke dans une variable J'ai une autre variable variaa = "abcd" et variaf qui contient une valeur vraie ou false et vouloir insérer en valeur variable. Je souhaite imprimer la variable finale dans le format ci-dessous p>
3 Réponses :
Sortie Yout Sortie est JSON, pour l'annexe de votre objet de sortie, vous pouvez utiliser JQ par exemple Essayez ceci: Dans ce cas, si en utilisant Si vous souhaitez utiliser plus de variables, vous devez utiliser La sortie sera la suivante: p> dans cet exemple En faisant cela, vous faites tout en un seul processus. p> p> json.txt code> contient votre entrée: p>
JQ --Arg Variaa ABCD '. + {Variaa: $ variaa} ' code> Il sortira ensuite: p>
- arg. code> plusieurs fois, par exemple: p>
Cat json.txt code> simule la sortie de votre commande, mais il convient de mention que si vous vouliez traiter un fichier existant, vous pouvez utiliser (remarquez le
<< / code>): p>
Merci pour la solution, pouvons-nous faire cela sans JQ comme il n'est pas là dans notre prod env.
Je suggère fortement d'utiliser JQ code> ou un autre processeur JSON
Vous êtes correct, cela semble très propre mais la contrainte ne me permet pas de l'utiliser. Je viens de vérifier ce n'est pas là sur des serveurs Prod. Nous avons des milliers de PROD SERVER SO PRATIQUEMENT impossible d'obtenir l'approbation, puis de l'installer.
Nous utilisons un planificateur de travail qui exécutez la commande directement sur un serveur et que vous fournissez une sortie, c'est une limitation des mots, c'est-à-dire pourquoi je ne peux pas écrire un script ling et pousser n exécuteur.so, j'ai besoin de trouver une solution dans des mots minimaux. Je ne peux pas briser la sortie JSON et exporter chaque variable puis imprimer en conséquence. D'une manière ou d'une autre, j'ai besoin d'insérer directement le nouvel objet.
Cependant j'aime votre solution, pouces pour ça
Utilisez - argjson variax true code> pour avoir la variable comme booléen au lieu de la chaîne
@Oliv je veux une solution sans utiliser JQ comme JQ n'est pas là dans mon prod env.
Juste un fichier Nitpick, JQ --Flags Pipeline Fichier Code> doit généralement être préféré à
Fichier CAT | JQ --Flags Pipeline Code>
Votre environnement de production est brisé si cela nécessite d'utiliser JSON sans les outils pour le faire correctement.
Comme d'autres l'ont dit, veuillez utiliser un outil de conscience JSON plutôt que pour la manipulation de la chaîne de base, il serait tenu de vous épargner des efforts à l'avenir si ce n'est pas un problème.
Depuis que vous avez dit que vous avez dit que vous pouvez actuellement 'T, voici une manipulation de chaîne "solution": p> Notez que cela échouera dans de nombreux cas tels que l'entrée non formatée comme d'habitude. (Une doublure serait correcte JSON, mais rendrait l'échec du script) ou contenant soudain des objets imbriqués, les variables contenant des guillemets, etc. p> vous pouvez l'essayer ici . p> p> printf code> gère toute la structure et prend en tant que paramètre le bloc central qui vient de votre saisir. Pour obtenir ce bloc de milieu, nous utilisons
grep code> pour exclure les lignes contenant des supports. P>
Ce pipeline fait ce dont vous avez besoin
Dupliqué possible: Stackoverflow.com/questions/1955505/... < / a>
Variaa est-elle toujours une chaîne simple? I.e. Pas de tableau, objet, numéro ou booléen?
Si vos serveurs de production manipulent les données JSON, elles doivent avoir des outils de conscience JSON d'une manière ou d'une autre. Soyez-le python, php, nœudjs ..., puis peut-être que Bash / Shell n'est peut-être pas le bon choix, car les commandes de coquille Bash seul ou Standard POSIX ne sont pas désignées pour manipuler JSON, à moins que vous n'installez des outils de ligne de commande spécialisés tels que JQ. Utilisez les autres personnes déjà disponibles des outils JSON au courant de vos serveurs de production ou d'ajouter JQ comme une exigence dans les spécifications de déploiement de votre programme.