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

时间:2019-05-25 07:31:56

标签: bash io-redirection heredoc

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

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

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

1 个答案:

答案 0 :(得分:0)

琐碎

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

<< 令牌 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。)