bashで関数出力を/ dev / nullにリダイレクトする方法

bashで関数出力を/ dev / nullにリダイレクトする方法

一部の機能を含むスクリプト()があり、別のスクリプト()~/func/functions.shがあります。~/scripts/example.sh

コード: function.sh

 #!/bin/bash
 function NameofFunction()
 {
  # do something...
  echo -e "\e[31m[ ERROR ]\e[39m more text..." 1>&2
  }

コード:example.sh(うまくいきます)

#!/bin/bash

. ~/func/functions.sh
function functioninExample()
{
#do something...
NameofFunction ${VAR1} ${VAR2}

}

functioninExample 2>/dev/null

コード: example.sh (動作しない)

#!/bin/bash

. ~/func/functions.sh
function functioninExample()
{
#do something...
NameofFunction ${VAR1} ${VAR2} 2>/dev/null

}

functioninExample

関数を編集せずに関数のエコーをリダイレクトする方法は?

NameofFunction ${VAR1} ${VAR2} 2>/dev/null 

動作しません。

functioninExample関数をリダイレクトせずに関数のエコーをリダイレクトする方法は?

答え1

これは、機能がstdoutnotを印刷しているためですstderr。試してみてください。

NameofFunction ${VAR1} ${VAR2} >/dev/null

または両方ともリダイレクトstderr そして stdout:

NameofFunction ${VAR1} ${VAR2} >/dev/null 2>&1

にエラーを印刷するのは良いスタイルなので、上記stderrの答えの代わりに関数を次のように変更することをお勧めします。

echo -e "\e[31m[ ERROR ]\e[39m more text..." 1>&2

関連情報