bash 如何將函數的輸出重新導向到 /dev/null

bash 如何將函數的輸出重新導向到 /dev/null

我有一個帶有一些功能的腳本 ( ~/func/functions.sh),我有另一個腳本 ( ~/scripts/example.sh)

代碼:functions.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 函數的情況下重定向函數中的 echo?

答案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

相關內容