我有一個帶有一些功能的腳本 ( ~/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
這是因為您的函數正在列印為stdout
not 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