J'écris un script shell simple qui récupère la sortie d'une commande et l'utilise dans une autre.en utilisant une sortie de commande de script shell
app=$(./twiddle.sh -u $1 -p $2 query jboss.web.deployment:* | grep $3)
doop=$(./twiddle.sh -u $1 -p $2 invoke jboss.system:MainDeployer $4 $app)
++ ./twiddle.sh -u admin -p mot de passe jboss.system appeler: MainDeployer arrêter $ 'jboss.web.deployment: guerre = worker.war, id = 1518231766 \ r'
que je vois dans les commandes ci-dessus que l'application vient de la valeur:
$'jboss.web.deployment:war=worker.war,id=1518231766\r'
Mais si je fais écho app $, alors je ne vois pas les guillemets et \ r ajoutée, Comment puis-je assurer l'application est envoyée sans guillemets comme une entrée à une autre commande? Je ne suis pas sûr où le problème est - je ne peux pas voir cela comme la sortie lorsque j'exécute les commandes en dehors de shell.
Merci pour toute aide.
Cela a fonctionné en faisant cela : app = 'echo $ app | sed 's/\ r // g'' – Anna
content que vous ayez travaillé .... – ennuikiller
'motif grep | sed/s/from/to/g'' n'est pas souvent nécessaire, car sed a un grep intégré: 'sed -ne '/ pattern/s/from/to/gp'' enregistre souvent une fourchette. Et sed peut même faire plusieurs substitutions en sauvant encore une autre fourchette ... – Jens