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
したがって、この答えはスクリプトのより広い問題を解決しません。より良いサービスを提供したいと思いますbash
。awk
変数をどのように扱うかによって、私が間違っている可能性がありますが、$times
真剣に疑わしいです。おそらく必要なことができるでしょう(みんな必要なもの)をawk
一文で表現します。