複数行の変数をgrepにパイプして、改行を保持するにはどうすればよいですか?
期待される結果:
$ git status --porcelain --branch
## test-branch
M image.go
M item.go
?? addme.go
?? testdata/
$ git status --porcelain --branch | grep -c '^??'
2
「2」が答えです。
しかし、スクリプト(またはコマンドを入力するだけ)では、これ$x
を下から解析することはできません。
$ x="$(git status --porcelain --branch)"
$ y="$(echo $x | grep -c '^??')"
$ echo "$y"
0
変数の割り当て$(echo $x ...
内でどのようにエコーしているのかと思いy
ます。
編集:私はx="$(git status --porcelain --branch)"
1回だけ実行しgrep
、さまざまな出力、値、カウント、ステータス、ブランチ、ビハインド、アヘッド、その他の値に対して複数のコマンドを使用して数十回解析しています。したがって、の出力をgit status ...
変数に割り当て、それを複数回解析する必要があります。
引用しない$x
と、単語が分割され、echo
1行の長い行が印刷されます。あなたはただ使う必要があります"$x"
:
x=$(git status --porcelain --branch)
y=$(echo "$x" | grep -c '^??')
echo "$y"
また、余分に使用する必要はありませんecho
:
y=$(grep -c '^??' <<< "$x")
shellcheckの使用をお勧めします。そのような場合に本当に役立ちます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加