GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie übergibt man die Ausgabe eines Befehls als Argument an einen anderen?

Eine ähnliche Frage wurde gestellt, aber da ich neu bei Unix bin Die Antwort war mir aufgrund des Kontextes nicht klar. Ich möchte die Ausgabe eines Befehls als Argument an einen anderen übergeben. Ich verwende Git für die Quellcodeverwaltung und arbeite an drei verschiedenen Branches.

Wann immer ich einen Commit ausführen muss, muss ich meinen Zweig überprüfen und dann den entsprechenden Befehl als

eingeben
git pull --rebase origin <branch-name>

Ich wollte einen Alias ​​als git-rebase schreiben und was es tun würde, ist, dass es zuerst git branch ausführt .

Die Ausgabe von git branch sieht so aus

experiment
*master
new feature

Wenn wir also zusätzlich zum Hauptzweig zwei Zweige haben, werden alle Zweige angezeigt und der aktuelle Zweig wird mit einem Stern markiert. Ich möchte die mit einem Stern markierte Zeile extrahieren und dann die Ausgabe davon an den obigen Befehl übergeben.

Außerdem möchte ich die Ausgabe des Befehls git branch unterdrücken . Ich mache das nicht, weil ich zu faul bin, den ganzen Befehl einzugeben, sondern weil ich gerne mehr über die Leistungsfähigkeit von Unix-Bash erfahren möchte. In der Hoffnung etwas daraus zu lernen

Akzeptierte Antwort:

Zuerst müssen Sie den git branch massieren Ausgabe in ein brauchbares Format

$ git branch
  experiment
* master
  new feature

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

Das wollen Sie jetzt als Argument verwenden:

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

(oder Sie können Backticks wie in Psusis Antwort verwenden).

Das sollte Alles klar, der awk-Befehl sollte immer genau einer Zeile entsprechen, und ich gehe davon aus, dass Sie keine Leerzeichen in Zweignamen haben dürfen. Für alles, was viel komplizierter ist, würde ich es wahrscheinlich in eine Funktion (oder ein Skript) packen, damit Sie die Zwischenwerte einigermaßen überprüfen können.


Linux
  1. Wie hängt man die Ausgabe an eine Datei an?

  2. Linux-Befehlsausgabe als Parameter eines anderen Befehls

  3. Wie gebe ich das Passwort für den Git-Pull-Befehl ein?

  4. So übergeben Sie ein Argument in Expect über die Befehlszeile in einem Shell-Skript

  5. Wie kopiere ich Commits von einem Git-Repo in ein anderes?

So wechseln Sie Branch auf Git

[Bash-Tipps] How To cd und ls in einem Befehl

[Bash-Tipps] Wie cp oder mv und cd in einem Befehl ausgeführt werden

So übergeben Sie das Passwort an den SSH-Befehl in Linux

Wie scheint dieser Befehl su -c „…“ zwei Befehle anstelle von einem zu übergeben?

So funktioniert die Versionskontrolle mit Git auf der Kommandozeile