
似たような質問をした方がいますが、初心者なので文脈上のUnix
回答がはっきりしません。私が望むのは、あるコマンドの出力を別のコマンドにパラメータとして渡すことです。私はソース管理にgitを使用し、3つの異なるブランチで作業します。
コミットする必要があるたびにブランチを確認し、適切なコマンドを発行する必要があります。
git pull --rebase origin <branch-name>
git-rebase
まず実行するだけですので、エイリアスを作成したいと思いますgit branch
。
gitブランチの出力は次のとおりです
experiment
*master
new feature
したがって、マスターブランチに加えて2つのブランチがある場合は、すべてのブランチが表示され、現在のブランチはアスタリスクで表示されます。アスタリスクで示された行を抽出し、その出力を上記のコマンドに渡したいと思います。
また、コマンドの出力を抑制したいと思いますgit branch
。私がこれをしたのは、完全なコマンドを入力するにはあまりにも怠惰ではなく、Unix bashの強力な機能についてもっと学びたかったからです。それから何かを学ぶことを願っています。
答え1
git branch
まず、出力を使用可能な形式に変換する必要があります。
$ git branch
experiment
* master
new feature
$ git branch | awk '/^\* / { print $2 }'
master
これでパラメータとして使用したいと思います。
$ git pull --rebase origin $(git branch | awk '/^\* / { print $2 }')
(またはpsusiの答えのようにバックティックを使用することもできます)。
これしなければならない大丈夫です。 awkコマンドは常に正確に1行に一致する必要があり、ブランチ名にスペースを含めることはできません。より複雑な場合は、関数(またはスクリプト)でラップして中間値の完全なチェックを実行できます。
答え2
しかもxargs
注文する。
xargs - build and execute command lines from standard input
したがって、上記の@Uselessの答えは次のように翻訳されます。
git branch | sed -ne 's/\*//p' | xargs git pull --rebase origin
答え3
いくつかの方法があります。最も簡単な方法はバックティックの交換です。
git pull --rebase origin `git branch | sed -ne 's/\*//p'`