GNU/Linux >> Tutoriels Linux >  >> Linux

Capturer automatiquement la sortie de la dernière commande dans une variable à l'aide de Bash ?

C'est une solution vraiment hacky, mais cela semble fonctionner la plupart du temps. Lors des tests, j'ai remarqué que cela ne fonctionnait parfois pas très bien lors de l'obtention d'un ^C sur la ligne de commande, même si je l'ai un peu modifié pour qu'il se comporte un peu mieux.

Ce hack est un hack en mode interactif uniquement, et je suis assez confiant que je ne le recommanderais à personne. Les commandes en arrière-plan sont susceptibles de provoquer un comportement encore moins défini que la normale. Les autres réponses sont un meilleur moyen d'obtenir des résultats par programmation.

Cela étant dit, voici la "solution":

PROMPT_COMMAND='LAST="`cat /tmp/x`"; exec >/dev/tty; exec > >(tee /tmp/x)'

Définissez cette variable d'environnement bash et lancez les commandes souhaitées. $LAST aura généralement la sortie que vous recherchez :

startide seth> fortune
Courtship to marriage, as a very witty prologue to a very dull play.
                -- William Congreve
startide seth> echo "$LAST"
Courtship to marriage, as a very witty prologue to a very dull play.
                -- William Congreve

Je ne connais aucune variable qui le fasse automatiquement . Pour faire autre chose que copier-coller le résultat, vous pouvez réexécuter ce que vous venez de faire, par exemple

vim $(!!)

!! est l'expansion de l'historique signifiant 'la commande précédente'.

Si vous vous attendez à ce qu'il y ait un seul nom de fichier contenant des espaces ou d'autres caractères susceptibles d'empêcher une analyse correcte des arguments, mettez le résultat entre guillemets (vim "$(!!)" ). Le laisser sans guillemets permettra à plusieurs fichiers d'être ouverts à la fois tant qu'ils n'incluent pas d'espaces ou d'autres jetons d'analyse du shell.


Linux
  1. Comment affecter la sortie d'une commande à une variable Shell ?

  2. Stockage de la sortie de la commande dans la variable Shell ?

  3. Utilisation d'une référence à une variable de chaîne Bash dans Sed ?

  4. Utilisation de la commande Linux Sleep dans les scripts Bash

  5. Diviser la sortie de la commande par colonnes à l'aide de Bash ?

Comment affecter la sortie d'une commande Linux à une variable

Tutoriel sur l'utilisation de la dernière commande dans le terminal Linux

Comment enregistrer le modèle correspondant dans une variable à l'aide de la commande "sed" ?

Utilisation de la commande Linux Basename dans les scripts Bash

Utilisation de la commande Linux Dirname dans les scripts Bash

Code de sortie de l'affectation de variable à la substitution de commande dans Bash