web-dev-qa-db-ja.com

変数に複数のgrep出力を組み合わせる

基本的に私は以下のシナリオを持っています。

  1. grep 'test: \K(\d+)' $file => 15
  2. grep 'test1: \K(\d+)' $file => 20

両方のコマンドの結果を、区切り文字としてコンマを使用するなどの変数に格納する方法はありますか?

Test="grep 'test: \K(\d+)' $file;grep 'test1: \K(\d+)' $file"

回答= eval $Test

期待される出力:15,20

4
Rocky86

はい、コマンド置換を使用してそれを行うことができます:

_Test="$(grep 'test: \K(\d+)' $file),$(grep 'test1: \K(\d+)' $file)"
_

変数= $(..)コマンド置換と呼ばれ、シェルコマンドを実行してその出力を変数に格納するか、echoコマンドを使用して表示するだけです。たとえば、日付と時刻を表示します。

_echo "Today is $(date)"
_

そしてそれを変数に保存するために:

_SERVERNAME="$(hostname)"
_

出力に連結できます:

_echo "$(hostname),$(date)"
_

結果は次のようになります。

_yourhostname,Tue Jan 24 09:56:32 EET 2017
_
8