いくつかの関数を含むスクリプト(~/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 関数をリダイレクトせずに、関数からのエコーをリダイレクトするにはどうすればよいですか?
答え1
これは関数が出力されていstdout
ないためです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