一部の機能を含むスクリプト()があり、別のスクリプト()~/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
これは、機能が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