检查脚本是否已重定向

时间:2013-04-16 09:21:17

标签: bash shell io-redirection

我有一个bash脚本,如果输出显示在终端中,或者它被重定向到文件,它必须以不同的方式运行。它必须做这样的事情(myscript.sh):

if [ redirected_to_terminal ] ; then
    flag="--color"
else
    flag="--no-color"
fi

grunt $flag

这将被称为:

./myscript.sh

或者像这样:

./myscript.sh > /tmp/log.txt

将在脚本中检测到stdout的重定向。这可能吗?

1 个答案:

答案 0 :(得分:5)

您可以使用bash的-t选项:

 -t fd  True if file descriptor fd is open and refers to a terminal.

并按照以下方式检查:

if [[ -t 1 ]]; then
 # console is attached
else 
 # Redirected to somewhere
fi