コマンド出力を変数として読み込む [冗長]

コマンド出力を変数として読み込む [冗長]

私はbashスクリプトを作成していますが、私は完全に初めてで迷子になりました。

私はこのコードを書いた

cat * | grep "|*parameter1*|" | grep "|*parameter2*|" | cut -f 8,11,12,15,21,23,34 -d "|" | wc -l

wc -lこれはうまく機能しますが、他のbashコマンドを使用して平均化できるように、出力を変数として読み取る必要があります。次に、この平均を印刷して人が読めるようにします。

答え1

$()直接の質問に答えるには、その出力が変数に割り当てられるように、コードをシーケンスにラップする必要があります。このように:

x=$(your_code_goes_here)

つまり、あなたの冗談についていくつかの注意があります。

  • なぜリードするのですcat *か?これはそうだ猫の無駄な使用。自分でできます。

    grep pattern *
    

    *これは、現在のディレクトリ内のすべてのファイルとサブディレクトリと一致し、(再帰)オプションを指定せずにディレクトリから検索するように要求した場合に警告を表示するため、grepまだ良い考えではありません。ユースケースによっては、-r使用法が適切である場合とそうでない場合があります。*

  • wc -l結局、目的が何であるかよくわかりません。cut複数行にわたって出力を印刷しないので、wc -l(行数を計算すると)常に1が返されます。

答え2

次の構文を使用できます。

var=$(cat * | grep "|*parameter1*|" | grep "|*parameter2*|" | cut -f 8,11,12,15,21,23,34 -d "|" | wc -l)

関連情報