Ale*_*lls 2 shell-script text-processing
假设我有这些 Bash 命令:
$ sha="$(git log --all --format=format:%H -n 1 -- .npp.json)"
$ git branch --contains "$sha" | tr -d " *"
Run Code Online (Sandbox Code Playgroud)
现在可能会记录如下内容:
master
dev
remotes/origin/foo
Run Code Online (Sandbox Code Playgroud)
我的问题是 - 是否有一些 Bash 实用程序可以为我连接所有输出,以便我得到如下内容:
master:dev:remotes/origin/foo
Run Code Online (Sandbox Code Playgroud)
该实用程序可能如下所示:
$ git branch --contains "$sha" | tr -d " *" | concat ":"
Run Code Online (Sandbox Code Playgroud)
当然,最终值需要回显,所以它可能看起来像:
$ result="$(git branch --contains "$sha" | tr -d " *" | concat ":")"
$ echo "$result"
Run Code Online (Sandbox Code Playgroud)
如果你问如何改变
master
dev
remotes/origin/foo
Run Code Online (Sandbox Code Playgroud)
到
master:dev:remotes/origin/foo
Run Code Online (Sandbox Code Playgroud)
那么tr '\n' :将是经典的 UNIXy 方式来做到这一点。
至于修剪可能的最终换行符,您可以先将输出保存到变量中,$()然后$()将删除它,或者您可以进行替换,将结果保存在变量中,然后variable=${variable%:}修剪最后的冒号。(有关更多选项,请参阅/sf/ask/115781501/。)