次のBashコマンドがあるとしましょう。
$ sha="$(git log --all --format=format:%H -n 1 -- .npp.json)"
$ git branch --contains "$sha" | tr -d " *"
これで、次の内容が記録されることがあります。
master
dev
remotes/origin/foo
私の質問は - すべての出力を接続して次のような結果を得るためのBashユーティリティはありますか?
master:dev:remotes/origin/foo
ユーティリティは次のとおりです。
$ git branch --contains "$sha" | tr -d " *" | concat ":"
もちろん、最終値はエコーする必要があるため、次のようになります。
$ result="$(git branch --contains "$sha" | tr -d " *" | concat ":")"
$ echo "$result"
ベストアンサー1
どのように変えるか尋ねると
master
dev
remotes/origin/foo
到着
master:dev:remotes/origin/foo
まあ、これはtr '\n' :
古典的なUNIXyアプローチになります。
可能な最後の改行を切り捨てるには、最初に出力をviaを介して変数に保存し、次に削除または置換を実行し、$()
結果$()
を変数に保存してからvariable=${variable%:}
最終コロンまで切り取ります。 (望むよりhttps://stackoverflow.com/questions/1654021/how-can-i-delete-a-newline-if-it-is-the-last-character-in-a-fileより多くの選択のために。 )