Bash 将 heredoc 输出重定向到 /dev/null

Bash redirect heredoc output to /dev/null

我有一个 bash 脚本调用 psql 并执行 SQL 代码:

sudo -i -u postgres psql <<EOF
SQL COMMANDS;
EOF 

SQL 部分生成大量输出,我想将其重定向到 /dev/null。如何将 heredoc 重定向到 /dev/null?

琐碎

postgres psql <<EOF >/dev/null
  SQL COMMANDS;
EOF 

<< token heredoc 定界符只是另一个重定向操作符;所以你可以做类似

的事情
postgres psql <<EOF 2>/dev/null |
  SQL COMMANDS;
EOF
while IFS= read -r output; do
    case $output in
      *error*) printf '%s%s%s\n' "$red" "$output" "$plain";;
        *) echo "$output";;
    esac
done

从第一行开始的管道在 EOF 标记之后继续。 (这需要您分别为红色和无色文本定义屏幕控制代码;man tput。)