svn info
さらなる処理のために、コマンドの出力(より正確にはリビジョン番号)を変数に保存したいと思います。ただストレージスペースが必要です4
。
$ svn info
[...]
Revision: 4
[...]
答え1
awkを使う
awkはこれに対してうまく機能します。
rev=$(svn info | awk '/Revision:/{print $2}')
上記のコードはコマンドの置き換え、$(...)
はコマンドの出力をキャプチャして変数に割り当てます。
上記のコードでは、awkは出力を読み取り、svn info
文字列を含む行を待ちますRevision:
。行が見つかったら、行の2番目のフィールド(リビジョン番号)を印刷します。
sedを使う
sedを使用してこれを実行することもできます。
rev=$(svn info | sed -n '/Revision:/ s/.* //p')
この-n
オプションを使用すると、sed は明示的に要求された場合にのみ印刷します。 /Revision:/
文字列を含む行を選択しますRevision:
。これらの行の場合は、置換コマンドを実行し、行の最後のスペースまですべての文字を削除してから、このp
オプションに従って行を印刷します。
シェルを使う
while read -r name value
do
[ "$name" = Revision: ] && var="$value"
done < <(svn info)
上記でリダイレクトが使用されました。プロセスの交換、、、はwhileループの< <(...)
出力を提供します。svn info
ループが繰り返されるたびに、行の最初の単語がに割り当てられ、name
残りの行がに割り当てられますvalue
。その場合、シェル変数はname
リビジョン番号に割り当てられます。Revision:
var
value
すべてではありませんが、多くのシェルがプロセス置換をサポートしています。上記のように、リダイレクトがプロセスの置き換えと組み合わせると、2つの間のスペースが<
重要です。