スクリプトコマンド出力を隠す

スクリプトコマンド出力を隠す

最適な設定で特定のコンピュータを自動的に構成するシェルスクリプトを作成しています。エコー出力を除いて、このスクリプトのすべての出力を非表示にしたいと思います。可能ですか?

答え1

スクリプトを起動します。

exec 3>&1 1>/dev/null 2>&1

これはstdoutの元のファイル記述子を&3に保存し、stdoutとstderrを/ dev / nullにリダイレクトします。何かを印刷したいときはいつでも、出力を&3にリダイレクトします。たとえば、次のようになります。

echo "This message won't be output"
echo "But this one will" >&3

この詳細を非表示にするには、fd 3に対応する関数を定義できます。

say() {
    echo >&3 "$@"
}

say "This goes to the log"

答え2

/dev/null標準出力を次にリダイレクトできます。

1>/dev/null

出力を生成するスクリプトの各行の末尾にあります。

以下を追加して、同じ方法でエラーをリダイレクトできます。

2>/dev/null

ほとんどのコマンドには、コンソールの一般出力をオフにするオプションもあります-q。使用しているコマンドのマンページを確認してください。

関連情報