【发布时间】:2017-05-29 20:24:52
【问题描述】:
我正在努力实现这一目标:
PIPE=""
if [ $DEBUG = "true" ]; then
PIPE="2> /dev/null"
fi
git submodule init $PIPE
但$PIPE被解释为 git 的命令行参数。如何仅在调试模式下显示 stdout 和 stderr,而在非调试模式下仅显示 stderr?
感谢您的精彩见解。最终这样做了,如果不在调试模式下,它将所有内容重定向到 /dev/null,并在调试模式下打印 stderr 和 stdout:
# debug mode
if [[ ${DEBUG} = true ]]; then
PIPE=/dev/stdout
else
PIPE=/dev/null
fi
git submodule init 2>"${PIPE}" 1>"${PIPE}"
【问题讨论】:
-
您是否尝试过将
$PIPE放在反引号中? `$PIPE` -
谢谢,但这不起作用,仍然得到“
line 17: 2>: command not found” -
您使用的是什么版本的 bash?您的原始代码似乎在我的 Mac 版本
3.2.57(1)-release上运行良好 -
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin16) -
您已经尝试只运行上面的这段代码,但您得到了那个错误?我基本上复制并粘贴了您的代码并添加了一行
$DEBUG="true"并且我没有收到有关找不到命令的任何错误...