bash - 仅当未设置 VERBOSE 时才将输出重定向到 /dev/null
问题描述
你将如何做到这一点?
if [[ -z $VERBOSE ]]; then
REDIRECT=">/dev/null 2>/dev/null"
fi
echo "Installing Pip packages" # Edited in for clarity
pip install requirements.txt $REDIRECT
echo "Installing other dependency"
<Install command goes here> $REDIRECT
解决方案
您可以使用以下命令重定向所有输出exec
:
if [[ -z $VERBOSE ]]; then
exec >/dev/null 2>&1
fi
pip install requirements.txt
如果您想稍后在脚本中恢复输出,您可以复制文件描述符:
if [[ -z $VERBOSE ]]; then
exec 3>&1
exec 4>&2
exec >/dev/null 2>&1
fi
# all the commands to redirect output for
pip install requirements.txt
# ...
# restore output
if [[ -z $VERBOSE ]]; then
exec 1>&3
exec 2>&4
fi
另一种选择是打开文件描述符/dev/null
或复制描述符1
:
if [[ -z $VERBOSE ]]; then
exec 3>/dev/null
else
exec 3>&1
fi
echo "Installing Pip packages"
pip install requirements.txt >&3
推荐阅读
- python - 如何将两个特定行合并为一行
- graph - 如何将 gremlin 作为 sql server 连接到 .net?
- javascript - Handlebars.registerHelper 不返回任何内容
- python - Discord.py 创建没有字幕的嵌入
- reactjs - ReactJS 功能组件与 AJAX 无需多次渲染
- python - 如何在python中计算双元音?
- video - FFMPEG 从文件目录中对每个视频文件进行 1 秒剪辑,直到达到总播放时间
- swift - 如何关闭已打开以供阅读的 AKAudioFile(或 AVAudioFile)?
- python - 如何将值作为一组来制作字典?
- node.js - 在 node.js 中编译依赖项