GNU/Linux >> Tutoriels Linux >  >> Linux

Comment passer la sortie d'une commande comme argument à une autre ?

Une question similaire a été posée, mais comme je suis nouveau sur Unix la réponse n'était pas claire pour moi en raison du contexte. Ce que je veux faire, c'est passer la sortie d'une commande comme argument à une autre. J'utilise git pour le contrôle des sources et je travaille sur trois branches différentes.

Chaque fois que j'ai besoin de valider, je dois vérifier ma branche, puis donner la commande correspondante en tant que

git pull --rebase origin <branch-name>

Je voulais écrire un alias comme git-rebase et ce qu'il ferait, c'est qu'il exécuterait d'abord git branch .

La sortie de la branche git ressemble à ceci

experiment
*master
new feature

Donc, si nous avons deux branches en plus de la branche principale, toutes les branches seront affichées et la branche actuelle sera marquée d'une étoile. Je veux extraire la ligne marquée d'une étoile, puis en transmettre la sortie à la commande ci-dessus.

Aussi, je voudrais supprimer la sortie de la commande git branch . Je ne fais pas cela parce que je suis trop paresseux pour taper toute la commande, mais parce que j'aimerais en savoir plus sur la puissance d'unix bash. En espérant en tirer quelque chose

Réponse acceptée :

Tout d'abord, vous devez masser la git branch sortie dans un format utilisable

$ git branch
  experiment
* master
  new feature

$ git branch | awk '/^\* / { print $2 }'
master

Maintenant, vous voulez l'utiliser comme argument :

$ git pull --rebase origin $(git branch | awk '/^\* / { print $2 }')

(ou vous pouvez utiliser des backticks comme dans la réponse de psusi).

Cela devrait ok, la commande awk doit toujours correspondre exactement à une ligne, et je suppose que vous ne pouvez pas avoir d'espaces dans les noms de branche. Pour quelque chose de beaucoup plus compliqué, je l'encapsulerais probablement dans une fonction (ou un script) afin que vous puissiez faire des vérifications de cohérence sur les valeurs intermédiaires.


Linux
  1. Passer la sortie de la commande précédente à la suivante en tant qu'argument ?

  2. Comment passer un argument de ligne de commande dans un script shell ?

  3. Comment cette commande Su -c "..." semble-t-elle transmettre deux commandes au lieu d'une ?

  4. Sortie de la commande Linux en tant que paramètre d'une autre commande

  5. Comment entrer le mot de passe dans la commande git pull ?

Comment changer de branche sur Git

[Bash Tips] Comment cd et ls en une seule commande

[Bash Tips] Comment cp ou mv et cd en une seule commande

Comment transmettre un mot de passe à la commande SCP sous Linux

Comment transmettre un mot de passe à la commande SSH sous Linux

Comment contrôler la version avec Git sur la ligne de commande