出力を変数に保存して再利用する

出力を変数に保存して再利用する
page=`grep $x /var/www/vhosts/example.com/statistics/logs/access_log | awk '{print $7}'| sort |uniq -c |sort -nr`
times=`$page | wc -l`

grepの出力を変数にpage

しかし、grep出力を再利用して別のものを計算したいと思います。

以下のコードは次のようになります。

command not found

問題を解決し、出力を再利用する方法は?

ベストアンサー1

page変数には任意のテキストを含めることができるので、を使用しないでくださいecho。を使用する必要があります。printf

times="$(printf %s\\n "$page" | wc -l)"

また、コマンド出力に末尾の改行文字が複数ある場合、grepとにかく期待した結果が得られません。コマンド置換は末尾の改行を削除します。echo私が使用したコマンドやprintf同様のコマンドは正確に追加されます一つgrep変数を設定するときに出力から削除される改行の数に関係なく、末尾の改行です。$page


もちろん、この場合でも変数の情報が出力される方法$timesなので、変数の先頭に余分な空白がたくさんあるはずです。wc -lしたがって、この答えはスクリプトのより広い問題を解決しません。より良いサービスを提供したいと思いますbashawk

変数をどのように扱うかによって、私が間違っている可能性がありますが、$times真剣に疑わしいです。おそらく必要なことができるでしょう(みんな必要なもの)をawk一文で表現します。

おすすめ記事