SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 社員募集 ...

【bash】複数のコマンドの結果をパイプで次のコマンドに渡したい

問題

複数のコマンドの実行結果を、次のコマンドに渡したいです。

bash

答え

例えば、echo、date、df のコマンドを組み合わせて、「ある時刻のディスク使用状況」を出力させられるが、これをmailコマンドに渡してメールさせてみる。

(~) でサブシェルに一式実行してもらって、結果をパイプでmail に渡す。

$ ( echo "Disk space usage report" ; date ; df ) | mail -s "report from 192.168.1.101" test@example.com

{~} を使う手もある。サブシェル起動ではなくて、複数コマンドをまとめてリダイレクトする機能。

$ { echo "Disk space usage report" ; date ; df ; } | mail -s "report from 192.168.1.101" test@example.com

※ {~} は、{ や } の前後にスペースを入れておいた方が無難だったり、最後の ; も入れておいた方がよかったりするようです。

関連するメモ

コメント