有没有一种方法可以配置sqlplus将错误输出到STDERR而不是STDOUT?

时间:2019-10-27 14:35:32

标签: linux oracle sqlplus

如果我通过管道发送此脚本:

me:~/git/my-project$ find . -type f -not -path '*bin*' -name '*ignored*sql' -exec cat {} \;
dsadadasda SELECT * FROM some_table;

像这样进入sqlplus

me:~/git/my-project$ find . -type f -not -path '*bin*' -name '*ignored*sql' -exec cat {} \; | sqlplus $my_connection_string | grep -i unknown
SQL> SP2-0734: unknown command beginning "dsadadasda..." - rest of line ignored.

然后错误进入STDOUT而不是STDERR

me:~/git/my-project$ find . -type f -not -path '*bin*' -name '*ignored*sql' -exec cat {} \; | sqlplus $my_connection_string 1>/dev/null
me:~/git/my-project$

是否可以配置sqlplus来执行其他操作?

1 个答案:

答案 0 :(得分:-2)

我想在这里引用 Manoj:

文件描述符 1 是标准输出 (stdout)。
文件描述符 2 是标准错误 (stderr)。

这是记住这个结构的一种方法(尽管它并不完全准确):起初,2>1 可能看起来是将 stderr 重定向到 stdout 的好方法。但是,它实际上会被解释为“将 stderr 重定向到名为 1 的文件”。 & 表示后面和前面的是文件描述符而不是文件名。所以构造变成:2>&1.

将 >& 视为重定向合并运算符。

参考来源链接:In the shell, what does " 2>&1 " mean?