检查脚本是否被重定向

3

我有一个 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个回答

6
您可以使用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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接