我有一个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
的重定向。这可能吗?
答案 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